次の構成のシステムでしばらくの間、neo4j 1.8.1 コミュニティ エディションを喜んで使用していました。
システム仕様:
- OS : 32 ビット Ubuntu 12.04.3 LTS。カーネル バージョン 3.2.0-52-generic-pae #78-Ubuntu
- メモリー:4GB
- スワップ: 8GB (スワップファイル - パーティションではありません)
- プロセッサー: Intel® Core™ i5-2430M CPU @ 2.40GHz - クアッドコア
- ハードディスク: 500GB Seagate ATA ST9500420AS 。デュアル ブート - Ubuntu は 100 GB を使用し、残りは万能の Windows 7 で使用します。
neo4j 2.0.1 エンタープライズ エディションに切り替えたところ、アプリケーションの応答時間が 4 倍遅くなりました。そこで、http://docs.neo4j.org/chunked/stable/embedded-configuration.htmlでアドバイスされているように、ファイルシステム、仮想メモリ、I/O スケジュール、および JVM 構成の調整を開始しました。
性能調整
スケジューリング優先度が最も高いサーバーとして Neo4j を開始しました (nice 値 = -20)
/etc/sysctl.conf で vm.dirty_background_ratio=50 および vm.dirty_ratio=80 を設定して、ダーティ メモリ ページがディスクに頻繁にフラッシュされるのを減らします。
Neo4j の起動で提案されているように、開いているファイルの最大数を 1024 から 40,000 に増やしました。
/etc/fstab の neo4j ext4 パーティションに noatime,nodiratime を設定して、ファイル/ディレクトリ アクセスがあるたびに inode が更新されないようにします。
http://www.cyberciti.biz/faq/linux-change-io-scheduler-for-harddisk/に記載されているように、I/O scheular を「cfq」から「noop」に変更しました 。
JVM パラメーター: つまり、最大ヒープ サイズは 1GB で、neostore メモリ マップ ファイル サイズは 425 MB です。
Xms および Xmx から 1GB まで。GC からコンカレント マーク スイープ。neostore.nodestore.db.mapped_memory=25M、neostore.relationshipstore.db.mapped_memory=50M neostore.propertystore.db.mapped_memory=90M neostore.propertystore.db.strings.mapped_memory=130M neostore.propertystore.db.arrays.mapped_memory=130M
悲しいことに、これは何の違いもありませんでした。より良い全体像を得るために、N 個のノードとこれらのノード間に M 個のランダムな関係を作成する簡単なスクリプトを作成しました。
Oracle Java バージョン「1.6.0_45」を使用した Neo4j 1.8.1 コミュニティ エディション:
new-sys-admin@ThinkPad:~/temp$ php perftest.php
Creating 1000 Nodes with index
Time taken : 67.02s
Creating 4000 relationships
Time taken : 201.27s
Oracle Java バージョン「1.7.0_51」の Neo4j 2.0.1 エンタープライズ版:
new-sys-admin@ThinkPad:~/temp$ php perftest.php
Creating 1000 Nodes with index
Time taken : 75.14s
Creating 4000 relationships
Time taken : 206.52s
上記の結果は、2 回のウォームアップ実行後のものです。2.0.1 の結果は 1.8.1 より遅いようです。関連する構成を調整して neo4j 2.0.1 のパフォーマンスを向上させるための提案をいただければ幸いです。
編集1
すべてのクエリは、Everyman Neo4j ラッパーを介して Gremlin を使用して発行されます。
http://grokbase.com/p/gg/neo4j/143w1fen8c/gremlin-plugin-extremely-slow-on-neo4j-2-0-1
その間、私は neo4j-enterprise-edition-1.9.6 (2.0.1 より前の最新の安定版) に移行し、正常に戻りました。