我有自定义foxx应用程序的严重问题.
该应用程序是用于在图中查找路径的自定义算法.它针对公共交通进行了优化.在init上,它将所有必要的数据加载到javascript变量中,然后遍历它们.它比每次访问数据库更快.
当我第一次通过API访问应用程序时,它很快,例如.300毫秒.但是,当我第二次完全相同的请求时,它非常慢.例如.7000ms.
你能帮我解决这个问题吗?我不知道在哪里寻找bug.
在不了解应用程序和代码的更多信息的情况下,我只能推测原因.
潜在原因#1:发展模式.
如果您在开发模式下运行ArangoDB,则会为每个Foxx路由请求运行init过程,从而使预先计算的值无效.您可以通过检查arangod日志来发现您是否在开发模式下运行.如果您处于开发模式,则会有相关的日志消息.
可能的原因#2:JavaScript变量是每个线程
您可以使用多个线程运行ArangoDB,从而运行Foxx,每个线程都有线程局部JavaScript变量.如果您向Foxx路由发出请求,则服务器将选择一个随机线程来回答该请求.如果此变量中的JavaScript变量仍为空,则可能需要先填充它(这将是您的初始化调用).对于下一个请求,将再次挑选随机线程以供执行.如果已在此线程中填充JavaScript变量,则响应将很快.如果需要填充变量,则响应将很慢.
在几个请求(至少与--server.threads启动选项中配置的数量)之后,每个线程中的JavaScript变量应该已经初始化,响应时间应该相同.
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |