2015-01-17 87 views
1

在ArangoDB 2.4.0我观察以下内容。当执行超时运行的查询时,似乎存在内存泄漏。描述:超时后内存泄漏?

  1. 我执行的查询持续时间超过了设置request-timeout = 3600(例如在arangosh配置中)所允许的时间。

  2. arandod开始工作,消耗CPU和RAM

  3. 后在规定的时间(这里是3600秒)查询抛出 异常(2001 - could not connect to server),其中的方式 起初有点混乱,如在我的情况下,它不是连接错误, 这是一个超时错误)。

  4. arangodb停止使用CPU,但不释放所使用的RAM。

  5. 到目前为止,即使进一步使用,内存也不会再次下降。 我甚至可以卸载所有的集合,所以RAM必须从其他方面阻止 。

只要我运行的查询可以在超时到达之前完成,完美运行。

在这种情况下是否有可能存在内存泄漏?或者,我是否必须手动启动某种垃圾回收器或执行其他操作?

+0

正如附加:目前再一种情况是这样的:(A)没有更多的外接阿朗戈请求正在运行(B)arangod具有0%CPU (C)所有集合都从内存中卸载(D)arangod仍然使用qw GB的内存........开始关闭后(使用Ctrl-C)arangodb做了一些工作,工作了几分钟,从而减少了内存,然后重新分配所有的内存一遍又一遍:甚至更多的时候曾经使用.....因此我必须杀死这个过程。 –

+0

令人惊讶的是,重启后现在也发生了同样的情况:服务器在几分钟后工作,从而获取所有内存(甚至更多).... –

+0

....没有打开的外壳。关闭浏览器界面后,arangodb也停止工作。重新打开浏览器界面后,我发现在半小时之前使用的2个集合是“automaticalle”加载的。将它们卸载后,RAM使用率回到550K。在另一个arangod重启后,一切似乎都恢复正常。 –

回答

1

OK,在此期间我至少有一些(部分?)答案:

  1. 在其中的一些“错误的场景”,也是在 创造了新的Skiplist索引。这似乎是一个比想象的运行时间长得多的任务,并且还占用了非常多的RAM空间。

    现在,查杀服务器,并再次重新启动它时,服务器再次 想做初始索引建设,使整个集合, 指数的空间,新的索引和大量临时RAM 的需要。

  2. 网页界面似乎是单线程的,甚至arangosh命令也是 同时被阻塞。因此,如果您点击其他按钮或键入 命令,例如还需要加载额外的集合,而执行 时,简单地会被延迟...并且可能在您不希望它们再运行的时间点 处执行。所以我宣布他们 如:-)我的新手陷阱

+0

经过arangodb工作了几天后,我经常观察到类似的问题:如果您发出一个查询(由于任何原因)花费太长时间或要从RAM中取出并因此强制您中断系统,你只有一次机会:杀死服务器。在这种情况下,下一次服务器启动可能会自动部署更长时间。不幸的是,到目前为止,还没有办法:a)概述当前正在运行的arango作业(例如在仪表板中)和b)专门停止/终止/中止其中一个作业。 –