我有一个在二进制文档上运行xdmp:document-filter()
的函数。我称之为:
let $doc-metadata-and-text := xdmp:document-filter(fn:doc("/ediscovery/mydocument.doc")/binary())
当我把它放在spawn-function()中时,我得到了内存不足的错误。这是我在日志文件中看到的内容:
2017-01-10 11:53:52.038注意:TaskServer:SVC-PROCESSRUN: xdmp:document-filter(fn:doc(" /ediscovery/mydocument.doc")/ binary()) - 进程运行错误:fork:无法分配内存
虽然如果我从XQuery main调用xdmp:document-filter()
,它可以正常工作。
有什么建议吗?
答案 0 :(得分:1)
xdmp:spawn-function
使用Task Server中的线程执行任务。这有它自己的设置,与通过查询控制台或其他应用程序服务器运行它不同。
在您的配置组下,查看Task Server配置并考虑更改max-inference-size
。
但是,更改内存/线程设置时应谨慎,因为它会更改服务器使用有限资源的方式。在您的情况下,令人困惑的部分是App Services,Task Server以及任何其他应用程序服务器的默认设置都将设置默认为相同的数量。
答案 1 :(得分:1)
我已经看到此功能在应用服务器上而不是在任务服务器上运行之前失败并且具有相同的“无法分配内存”错误。要检查的一件事是交换空间,因为xdmp:document-filter
正在分支一个单独的进程(如错误所示)。
ML建议位于https://help.marklogic.com/knowledgebase/article/View/21/19/swap-space-requirements。