ここに変なものがあります。テスト用のデータが入力された本番MongoDBをセットアップしました。サービスを開始するとすぐに、何も実行せずに100%のCPU負荷にすぐに達したため、サーバーをレプリカセットから削除し、CPUを2-3%に下げました。
すべてのユーザーをアクティブにすると、100%まで急上昇することがわかりました。夜通し放置して、改善の兆候がないか監視することを述べました。
翌朝入って来て、CPUは約40%に下がり、非常に安定しているように見えました。今から約1週間後、CPUの使用量が最大になるほぼ4日間これが発生していることを除いて、上記と同じ問題に遭遇しました。
私はdb.currentOP()コマンドを使用して、355254秒間実行されている "WT RecordStoreThread:local.oplog.rs"から1つを見つけました。これは、最大化されているCPUと一致する約98時間に相当します。
マシンには8コア@ 2.4GHzと16GB RAM=なので、CPUがこのような初期段階でこれほど大きな問題になるとは思わないでしょう。
構成ファイルは次のようになり、IPとポートが開始されます。
systemLog:
destination: file
path: E:\data\log\mongod.log
storage:
dbPath: E:\data\db
net:
port: xxxxx
bindIp: xxx.xxx.xxx.xxx
#replication:
# replSetName: "rs1"
security:
authorization: enabled
# keyFile: E:\data\mongodb.key
いくつかのリソースを解放することを期待して、本日サービスを再開しましたが、すぐに再び最大になりました。
私はSOで他の問題を調べましたが、この問題を解決するための本当の答えはないようです。時間を割いてこれを読んでくれて、誰かが同じ問題に遭遇したか、あなたのフィードバックを得るのに素晴らしいだろうそれを解決する方法についてのアイデア!
確かに奇妙です。
そのlocal.oplog.rsは、64ビットシステムで有効(デフォルト)になっているもの(32ビットのデフォルト値はfalse)をジャーナリングしています。したがって、そのスレッドの実行時間は、mongodの稼働時間と同じでなければなりません。
ただし、ジャーナリングによってCPU使用率が上昇することはありません。 CPU使用率が高い場合、mongotop
とmongostat
は何を示していますか?システムで何が起こっていますか?
top
- commandの結果を見ると、「who」が最も多くのCPUパワー(1つまたは複数のmongodプロセス?)を消費しており、最も高い%-value us(er)、sy(stem)、ni(ce )、id(le)、wa(it)?