症状
コンシューマーは、メインの消費スレッドを使用して、プルされたメッセージをコンシューマーに接続されているネットワークファイルシステム(NFS)に同期します。 これにより、コンシューマーのメッセージ消費速度が低下し、メッセージ処理がブロックされます。
原因
- NFS が十分な速度で実行できません。
- NFS は、複数のコンシューマーからの同時アクセスをサポートする共有ネットワークストレージシステムです。 ただし、コンシューマーはリソースを競合します。 関与するコンシューマーが多いほど、NFS が提供できるパフォーマンスは低下します。
解決策
- メッセージの消費と保存には、2 つの独立したスレッドを使用することをお勧めします。 1 つはメッセージのプルに使用され、もう 1 つはメッセージの保存に使用されます。 メッセージプル用のスレッドがメッセージを処理した後、スレッドは処理結果を保存用の別のスレッドに転送し、メッセージの消費を続けます。 これにより、消費効率が確保されます。
- 各コンシューマーにウルトラディスクまたはソリッドステートドライブ(SSD)を接続して、処理結果を個別に保存することもできます。 これにより、コンシューマー間での NFS リソースの競合によるパフォーマンスの低下を防ぎます。 異なるコンシューマーの処理結果を同じ NFS に保存するには、非同期ツールまたはスレッドを使用して、クラウドディスクに保存されている処理結果を NFS に転送します。 これにより、NFS への同期ストレージによってメッセージ処理がブロックされるのを防ぎます。 非同期処理は、競合するリソースアクセスによるパフォーマンスの低下を防ぐ効果的な方法です。