Arangodb Foxx应用程序性能差

4

我有一个关于自定义Foxx应用程序的严重问题。

关于该应用

该应用程序是用于在图形中查找路径的定制算法,它针对公共交通进行了优化。初始化时,它将所有必要的数据加载到JavaScript变量中,然后遍历这些数据。相比每次访问数据库,它更快。

问题

当我第一次通过API访问该应用程序时,速度很快,例如300毫秒。但是,当我进行完全相同的请求第二次时,速度非常缓慢,例如7000毫秒。

请您帮助我解决这个问题好吗?我不知道哪里出了错误。

1个回答

6

不了解应用程序和代码的详细信息,我只能猜测原因。

可能的原因#1:开发模式。

如果您在开发模式下运行ArangoDB,则对于每个Foxx路由请求都会运行init过程,使得预先计算的值无用。您可以通过检查arangod日志来确定是否在开发模式下运行。如果处于开发模式,则会有一条与此相关的日志消息。

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

您可以使用多个线程运行ArangoDB和Foxx,每个线程都拥有本地JavaScript变量。如果您向Foxx路由发出请求,则服务器将选择一个随机线程来响应该请求。如果该线程中的JavaScript变量仍为空,则可能需要首先填充它(这将是您的init调用)。对于下一个请求,再次选择一个随机线程进行执行。如果该线程中的JavaScript变量已经填充,则响应将很快。如果需要填充变量,则响应将很慢。

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


你的第二个选项是解决之道。问题在于,在初始化变量时,我又添加了数据,因为我认为变量为空,但实际上并不是这样。现在我正在检查数据是否已加载,一切都正常。 - Jakub Riedl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接