複数のホストが相互作用しているMongoサービスがあります。 Mongoサービスが実行されているホストは非常に特殊で、3TBのRAMが搭載されています。ただし、そのホストは断続的なバスエラー応答もスローします。 Mongoサービスプロセス内でバスエラーが発生した場合、サービスは停止され、リソースと対話しているすべてのセロリ(Python)プロセスに接続拒否応答が提供されます。
Mongoサービスを許可する方法はありますかどういうわけかバスエラーから回復するには?シャーディングはこの問題に役立ちますか?アプリケーション構成レベルで実行できるバスエラーに対する他の潜在的な解決策はありますか?この質問について他の人が提案できる提案に感謝します!
RedHatのソースからMongoをビルドしたので、それが役立つ場合は最新バージョンを使用できます。現在インストールされているバージョンは3.6.4です。
コメント
- バスエラーは、そこにない(対処できない)RAMをアドレス指定しようとするプロセスから発生します。HW/を調べる必要があると思います。 SWの互換性。
- @dezsoこの問題をアプリケーションレベルで解決することはできませんか?'この場合、ハードウェアに影響を与えることはできませんが、構成することはできますmongoアプリケーション…
- そうですね、MongoDBはメモリを適切に処理(アドレス指定)できません。これは、設定を調整することで修正できるものではありません(ただし、実際にMongoDBを知らなくてもこれを言っています)。 '開発者に問題を開くことをお勧めします。開発者は、ここの誰よりも良いアイデアを持っているかもしれません。
- @duhaime、"バスエラー?。それはソフトウェアレベルまたはハードウェアラベルから来ていますか? Linux環境で" smartmontools "を確認しましたか?
- @MdHaidarAliKhanこのバスエラーはハードウェアレベルですが、'アプリケーションレイヤーで例外をキャッチしたいのですが…
回答
Mongoサービスでのバスエラーの処理
MongoDBのドキュメントここ smartctl
を実行することも役立ちます( smartmontools の一部)でSMARTハードウェアエラーをチェックします:
sudo smartctl -a /dev/sdb
Linuxを実行することもできますfsck
ユーティリティはLinuxファイルシステムのチェックと修復に使用されます(ext2
、 ext3
、ext4
など)。
ファイルが最後にいつだったかによって異なります。システムがチェックされた場合、システムは起動時にfsck
を実行して、ファイルシステムが一貫した状態にあるかどうかをチェックします。システム管理者は、ファイルシステムに問題がある場合に手動で実行することもできます。
データの破損を防ぐために、マウントされていないファイルシステムでfsck
を実行してください。
回答
バスエラーは、ほとんどの場合、プログラムのバグ、この場合はMongoDB自体、またはまれにハードウェアの問題。そのため、最初に試すことは、最新の安定バージョンにアップグレードすることです。問題が解決しない場合は、バグレポートをMongoに送信する以外にできることはほとんどありません。