0

ロギング情報をmongodbに非同期で書き込んでいます。これは必須ではない機能なので、アプリケーションの他の部分からの読み取り/書き込みに影響を与えないように、これらの書き込みを抑制する方法を探しています。基本的に、特定の統計が許容レベルを下回っている場合にのみ書き込みます。

私が使用しようと思った統計の1つは、serverStatusの「globalLock.ratio」です。ただし、これは移動平均ではなく、データベースの現在の使用量を測定するための適切な方法ではないようです。

私がやろうとしていることに使用するのに良い統計は何でしょうか?書き込みロック%が理想的ですが、serverStatusから移動平均を取得するにはどうすればよいですか?

4

1 に答える 1

0

あなたの質問について注意すべきことがいくつかあります:

1)移動平均が必要な場合は、クライアントプログラムで自分で移動平均を追跡する必要があります。マルチスレッドプログラムを実行している場合は、1つのスレッドを定期的(1秒?5秒?)間隔でMongoDBのポーリングに割り当て、移動平均を自分で計算することができます。これがMMSのやり方です。

2)この平均を計算するときは、「ロードされたデータベース」があなたにとって何を意味するかを理解する必要があります。チェックすることがたくさんあるかもしれません:あなたは書き込みロックのパーセンテージを気にしますか?パーセンテージを読みますか?I / Oの使用法は?レプリケーションの遅延?残念ながら、すべてのユースケースで常に機能する単一の指標はありません。気になることを理解し、それを測定する必要があります。

3)この目標を達成するために実行できる別の戦略は、書き込みの懸念、「マジョリティ」の「w」値、および適切なタイムアウト(たとえば、10秒)を使用してロギングコレクションへの書き込みを行うことです。これを使用すると、レプリケーションよりも速くデータベースに書き込むことができなくなります。タイムアウトが発生し始めた場合は、縮小する必要があることがわかります。キューを空にするのに十分な速度で書き込むことができない場合は、その時点でログエントリの削除を開始します。

于 2012-06-22T21:45:14.310 に答える