2

我有一个简单的 jquery,它通过 get 调用一个 servlet,然后 Neo4j 用于以 JSON 格式返回数据。

该系统在第一次查询后是可用的,但在第一次使用时,系统速度慢得令人难以置信。这是某种初始化问题。我正在使用 Heroku 网络托管。

代码相当长,所以我现在不发布,但是关于第一次调用 Neo4j 是否有任何已知问题?

到目前为止,我已经对性能进行了有限的测试,因为无论如何我遇到了很多 JSON 问题,而且它们只是刚刚得到解决。

概括:

jQuery(LINUX)<--> 获取 (JSON) <---> Neo4j

  1. 第一次查询 - 响应时间为 10-20 秒
  2. 第二次查询 - 时间为 2-3 秒
  3. 更多查询 - 2/3 秒。

这不是一次性的;我对此进行了几次测试,并且总是出现相同的模式。

4

1 回答 1

1

这是 Neo4j 的正常行为,其中存储文件被延迟映射到内存中,用于部分变热的文件,而变热可能需要对这样的部分进行数千次请求。这是一种考虑到大存储的行为,而对于较小的存储,它只会妨碍(如果它适合内存,为什么不映射整个事物呢?)。

然后最重要的是一个“对象”缓存,它进一步优化了访问,为请求的实体懒惰地填充。

使用 SSD 而不是旋转媒体通常会大大加快初始非内存映射随机访问的速度,但在您的场景中,我认识到这是不可行的。

有人认为在数据库生命周期开始时对存储的热部分(即内存映射,即使不那么热)更敏感,或者更准确地说,热敏感度是当前内存映射量与如何映射的函数最多可以映射很多。这表明初始请求响应更快。

于 2013-08-23T10:31:36.037 回答