0

MongoDB のマッピングされていない仮想メモリの使用率が非常に高いことがわかります。大量の仮想メモリが表示されtoppmapそのほとんどがファイルに割り当てられていないことがわかります。さらにMMS、マップされていない大量の仮想メモリを表示することで、これを確認します。

グラフのMMS説明には、マップされていない仮想メモリについて次のように記載されています。

この数値が非常に高い (数ギガバイト) 場合は、ファイルのメモリ マッピング以外の側面で過剰なメモリが使用されていることを示しています。マップされていないメモリが大量に使用される最も一般的なケースは、データベースへの接続が非常に多い場合です。各接続にはスレッド スタックがあり、それらのスタックのメモリは合計するとかなりの量になる可能性があります。ここで使用されるメモリはキャッシュに使用できないため、この統計を適度に低く保つことが重要です。

だから今、私はここに表示されている金額が不当であるかどうか、それが実際に問題なのか、それとも問題ないのか疑問に思っています. 金額は画像でも分かりますが、念のため本文でも説明します。

私のデータベースサイズは約12.5GBです。常駐メモリの使用量は 11GB、マップは 18GB、仮想はなんと 118GB です。データベースへの接続数は約 50 (40 から 60 の間を移動) であるため、それが原因ではないようです。

pmap出力に次のようなエントリが多数表示されることに注意してください。

0000013f9dfff000 521296K -----    [ anon ]
000001439e400000   1024K -----    [ anon ]
000001439e500000   1024K rw---    [ anon ]
000001439e600000   2048K -----    [ anon ]
000001537ce33000    820K -----    [ anon ]
000001537cf00000     20K rw---    [ anon ]
000001537cf05000      4K -----    [ anon ]
000001537cf06000    996K rwx--    [ anon ]
000001537cfff000      4K -----    [ anon ]
000001537d000000     20K rw---    [ anon ]
000001537d005000      4K -----    [ anon ]
000001537d006000    996K rwx--    [ anon ]

特に最初の約 .5GB のエントリは過剰に思えます。grepによると、159回、非常に頻繁に戻ってくることがわかります。それで、私が見ている金額のほとんどを説明できます。ただし、これらのエントリがどこから来ているのかはわかりません。

CentOS 6.4 (64 ビット) で MongoDB v2.4.1 を使用しています。

MMS スクリーンショット

4

1 に答える 1

1

調査したところ、問題が の使用に関連しているという強い兆候がいくつかありましたrockmongo。私は 10gen でプライベート サポート チケットを発行しましたが、彼らはこの問題が実際にrockmongo関連していることを発見しました。どうやらeval()、大量のメモリを必要とするサーバー側の V8 JavaScript エンジンを生成する多くの呼び出しを使用しているようです。にバグレポートを提出しましたrockmongo

于 2013-07-23T14:42:19.180 に答える