2

get を介してサーブレットを呼び出す単純な jquery があり、Neo4j を使用してデータを JSON 形式で返します。

システムは FIRST クエリの後は動作しますが、最初にシステムを使用するときは信じられないほど遅くなります。これはある種の初期化の問題です。Heroku Web ホスティングを使用しています。

コードはかなり長いので、今は投稿しませんが、Neo4j の最初の呼び出しに関する既知の問題はありますか?

とにかく多くのJSONの問題があり、それらは解決されただけなので、これまでのところパフォーマンスについて限定的なテストを行ってきました.

概要:

JQuery(LINUX)<--> get (JSON) <---> Neo4j

  1. 最初のクエリ - 応答は 10 ~ 20 秒
  2. 2 番目のクエリ - 時間は 2 ~ 3 秒
  3. より多くのクエリ - 2/3 秒。

これは 1 回限りではありません。これを数回テストしましたが、常に同じパターンが表示されます。

4

1 に答える 1

1

これは Neo4j の通常の動作であり、ファイルの一部がホットになるとストア ファイルが遅延してメモリにマップされ、ホットになるにはそのような部分へのおそらく数千のリクエストが必要になります。これは大規模な店舗を念頭に置いた動作ですが、小規模な店舗では邪魔になるだけです (メモリに収まる場合は、全体をマップしてみませんか?)。

その上に、アクセスをさらに最適化する「オブジェクト」キャッシュがあり、要求されたエンティティに対して遅延して入力されます。

メディアを回転させる代わりに SSD を使用すると、通常、メモリにマップされていない最初のランダム アクセスがかなり高速化されますが、あなたのシナリオでは、それは実行可能ではないと認識しています。

データベースのライフサイクルの開始時に、ストアのホットな部分 (つまり、それほどホットでなくてもメモリ マップ) に対してより敏感になることについての考えがあります。または、より正確には、現在のメモリ マップの量とどのようにマップされているかの関数として、熱感度を持たせることについて考えられています。最大で多くをマッピングできます。これにより、最初のリクエストの応答性が大幅に向上することが示されています。

于 2013-08-23T10:31:36.037 に答える