35

現在elasticsearch 0.9.19を使用しています。私が使用しているマシンには約 300GB のディスク容量があり、その上の RAM は約 23GB です。エラスティック検索に約 10 GB の RAM を割り当てました。私の操作は書き込み集中型です。彼らは周りにい1000docs/sます。マシンでエラスティック検索のみを実行しており、他のプロセスは実行していません。ドキュメントのサイズは大きくありません。それらは 10 個以下のフィールドしかない小さいものです。弾性検索は、1 つのシャードと 0 のレプリカを持つ 1 つのマシンでのみ実行されています。

使用されるメモリは、送信中に急速に増加し始めます1000 docs/s。エラスティック検索にのみ 10GB の RAM を割り当てましたが、それでもほぼ 21GB の RAM が消費され、最終的にエラスティック検索プロセスでヒープ領域が不足します。後で、OS キャッシュをクリアしてすべてのメモリを解放する必要があります。エラスティック検索の送信を停止して1000docs/sも、メモリは自動的にクリアされません。

したがって、たとえば、1000doc/s書き込み操作でエラスティック検索を実行している場合、RAM の使用量が非常に速く 18 GB になり、後で書き込み操作を 10 ドキュメント/秒に減らしたときに、使用されるメモリも約 18 と表示されることがわかりました。 GB。これは、書き込み操作の数の減少に伴って発生するはずです。クエリごとに 100 ドキュメントのサイズで書き込み操作を実行するために Bulk API を使用しています。書き込み操作が約 1000docs/秒の場合、データは 4 台のマシンから送信されます。

これらは私がトップをやった後に得ている数字です

メモリ: 合計 24731664k、使用済み 18252700k、空き 6478964k、バッファ 322492k

スワップ: 合計 4194296k、使用済み 0k、空き 4194296k、キャッシュ 8749780k

PID ユーザー PR NI VIRT RES SHR S %CPU %MEM TIME+ コマンド

1004 エラスティック 20 0 10.7g 8.3g 10m S 1 35.3 806:28.69 java

この理由が何であるか、誰かが何か考えを持っているかどうか教えてください。この問題のため、アプリケーションを停止する必要があります。設定が不足していると思います。ここでエラスティック検索のキャッシュ関連のドキュメントをすべて読みました http://www.elasticsearch.org/guide/reference/index-modules/cache.html

また、キャッシュのクリア API を使用してキャッシュのクリアを試み、API のフラッシュも試みました。しかし、何の改善も得られませんでした。

前もって感謝します。

4

3 に答える 3

3

メーリング リスト スレッドでの回答を要約すると、問題は Ruby クライアントがその挿入を調整できず、大量のドキュメントが追加されると Lucene のメモリ使用量が増加することでした。コミットの頻度にも問題があると思います。新しく追加されたドキュメントをディスクにフラッシュするために、時々コミットすることが重要です。OPにはまだ問題がありますか?そうでない場合は、解決策を投稿できますか?

于 2013-12-10T16:32:34.037 に答える