gpt4 book ai didi

linux - 使用 RestXQ 服务打开的文件过多

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:07 24 4
gpt4 key购买 nike

我在 Debian 服务器上安装了 eXist 2.1(版本 eXist-db-setup-2.1-rev18721),在其上设置了一个非常简单的 RestXQ 服务:

declare
%rest:PUT("{$content}")
%rest:path("/foo")

function init:init($content as node()*) as item()+ {
let $log := util:log("INFO", " test")
let $id := $content/Identifiant/text()
let $mypath := "/db/test/"
let $finalpath:=xmldb:store($mypath, concat($id,".xml"),$content)
let $code := if($finalpath="") then(500) else(201)
return (
<rest:response>
<http:response status="{$status}">
<http:header name="Content-Type" value="application/xml; charset=utf-8"/>
</http:response>
</rest:response>
,$finalpath)
};

当我调用使用它的脚本时,没有问题。

但后来我尝试构建一个脚本来调用该服务大约 2000 次(简而言之,我想在数据库中放入 2000 个不同的文件,每个文件都相当小,比如 100 行)。

如果我启动一次,没问题;如果我第二次尝试,一段时间后会出现一些错误,然后仪表板出现一些问题(根本没有响应),但 xmlrpc 客户端和其余访问仍然有效,直到我重新启动 eXist。

在restxq.log中,我看到了这个:

引起:java.io.FileNotFoundException:/tmp/_mmtfm_c1600dd8-7203-442c-986b-90328917d6b5/mmtf_1418203231259112417444648192085.tmp(打开的文件太多)。

所以我在linux系统中检查了eXist的pid,通过lsof,我看到eXist进程使用了​​超过4000个文件。经过多次实验,4324(或4325)似乎是出错的极限。

如果我重新启动 eXist,该进程会使用大约 450 个文件;每次我想调用Web服务时,都会在exist/tools/jetty/tmp/中创建一个文件(和一个文件夹),然后由进程使用。

有人遇到过这个问题吗?为什么 PUT 完成后这些文件没有被释放?

谢谢,新年快乐^^

最佳答案

@lomobob,您还将此问题发布到了exist-open 邮件列表中。我建议您在一个或另一个地方提出这个问题,以免重复工作!

关于linux - 使用 RestXQ 服务打开的文件过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27802059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com