Arangodb foxx-应用性能不佳

Jak*_*edl 4 node.js arangodb

我有自定义foxx应用程序的严重问题.

关于应用程序

该应用程序是用于在图中查找路径的自定义算法.它针对公共交通进行了优化.在init上,它将所有必要的数据加载到javascript变量中,然后遍历它们.它比每次访问数据库更快.

问题

当我第一次通过API访问应用程序时,它很快,例如.300毫秒.但是,当我第二次完全相同的请求时,它非常慢.例如.7000ms.

你能帮我解决这个问题吗?我不知道在哪里寻找bug.

stj*_*stj 6

在不了解应用程序和代码的更多信息的情况下,我只能推测原因.

潜在原因#1:发展模式.

如果您在开发模式下运行ArangoDB,则会为每个Foxx路由请求运行init过程,从而使预先计算的值无效.您可以通过检查arangod日志来发现您是否在开发模式下运行.如果您处于开发模式,则会有相关的日志消息.

可能的原因#2:JavaScript变量是每个线程

您可以使用多个线程运行ArangoDB,从而运行Foxx,每个线程都有线程局部JavaScript变量.如果您向Foxx路由发出请求,则服务器将选择一个随机线程来回答该请求.如果此变量中的JavaScript变量仍为空,则可能需要先填充它(这将是您的初始化调用).对于下一个请求,将再次挑选随机线程以供执行.如果已在此线程中填充JavaScript变量,则响应将很快.如果需要填充变量,则响应将很慢.

在几个请求(至少与--server.threads启动选项中配置的数量)之后,每个线程中的JavaScript变量应该已经初始化,响应时间应该相同.