ゲームサーバーのさまざまな地域で数時間ごとに実行されるアップデータースクリプトがあります。このスクリプトをより頻繁に実行し、リージョンを追加したいと考えています。理想的には、CPU と I/O の負荷をできるだけ均等に分散したいと考えています。以前は mysql を使用してこのスクリプトを実行していましたが、現在、この Web サイトではすべてに mongodb を使用しているため、アップデーター スクリプトも mongodb に移動することに意味がありました。mongodb がすべての更新をデータベースにフラッシュすると、I/O スパイクが非常に高くなります。
C#
あまり相対的ではないと思いますが、スクリプトは で書かれています。さらに重要なことは、これらのスクリプトの 1 つが実行されるたびに、約 50 万から 120 万の更新を行っていることです。コードとインデックスでいくつかの小さな最適化を行いましたが、現時点では、実際の mongodb 設定を最適化する方法に行き詰まっています。
いくつかの他の重要な情報は、私たちがこのようなことをするということです
update({'someIdentifier':1}, $newDocument)
これの代わりに:
$set : { internalName : 'newName' }
これが行うかどうかよりもパフォーマンスがはるかに悪いかどうかはわかり$set
ません。
負荷を分散するために何ができるでしょうか? それが役立つ場合は、VM により多くのメモリを割り当てることができます。
より多くの情報を提供できることをうれしく思います。