【发布时间】:2016-02-18 20:31:23
【问题描述】:
我在 PC Ubuntu 和 Mac 上使用 ArangoDB 有一段时间了,没有任何问题。 一般来说,我的 Foxx 应用程序在 Mac 上的运行速度是 PC 上的 4 到 5 倍。
我在两台机器上都传递了 2.7.3 版本。 现在 Mac 比 PC 慢。 更糟糕的是,与应用程序处于“生产”或“开发”模式相比,她的工作速度相同。 我对“生产”模式编译的真实性有疑问。但是,“foxx-manager list”命令根据选择的模式返回“true”和“false”。
有没有办法检查应用程序的脚本在编译模式下是否运行良好? 建议?
【问题讨论】:
-
回几个问题:您如何确定应用程序运行“慢”还是“快”?您是否正在测量客户端通过 HTTP/HTTPS 调用应用程序的往返时间?是否涉及任何网络,或者到处都是“本地主机”?应用程序代码是否取决于集合或文档的数量,您是否在大约运行它。两台机器上的相同数据集?机器是否有足够的内存将工作数据保存在 RAM 中?
-
“production”模式表示是否已经通过
require加载了app模块,所有app路由都将保留在缓存中。 “开发”模式意味着您的应用程序中的每个“要求”实际上都会重新编译模块,并且应用程序路由将在每个 HTTP 请求上重新构建。这使您的应用程序保持最新,但肯定有开销,不应该在生产中使用。但我不清楚所有执行时间都花在了哪里:加载应用程序还是执行应用程序代码?例如。瓶颈可能在应用程序的代码内部,甚至可能不受生产/开发设置的影响。 -
我通过同时观看两台机器的日志来比较速度。两者都使用本地数据(CouchDB - > python - > ArangoDB)执行相同的代码。在升级到 2.7.3 版本之前,我已经将 Mac 升级到 El Capitan。由于我已经用 Homebrew 安装了 ArangoDB,所以我昨天决定卸载所有东西(CouchDB、ArangoDB、python ……),然后专心地重新开始。今天一切都准备好了,同样的代码,同样的数据。结果是一样的。缓慢。我在 Homebrew 附近找不到任何解释(问题……) ArangoDB 附近的任何东西(stackoverflow、Google 组……)
-
从描述中仍不清楚瓶颈在哪里:有 CouchDB、Python 和 ArangoDB 运行,还有一个内部未知的 Foxx 应用程序。为了使测量更具体到 ArangoDB,是否可以让客户端程序(arangosh、curl)仅在 ArangoDB 中发出对 Foxx 应用程序的调用并对其计时?这应该让您了解当前的吞吐量,如果您认为它太慢,我们可以寻找改进方法(但这可能涉及查看当前未知的 Foxx 应用程序代码)。
-
默认情况下,ArangoDB 有几个 V8 上下文,由工作人员轮询选择。在 2.7 中,foxx 服务是在首次访问时加载的,因此您可能会看到它们在每个上下文中首次访问需要更长的时间。如果您想获得可比较的数字,您需要在开始实际测试之前通过多次访问该 foxx 服务来预热该服务,或者将可用 javascript 上下文的数量设置为 1:
--javascript.v8-contexts=1(不建议用于生产环境)以了解访问它一次将准备好所有上下文。
标签: arangodb