分散システムのパフォーマンスのボトルネックを追跡する方法について考えていました。X-Traceやその子孫 ( Dapperなど)のようなツールは知っていますが、特定のツールよりも方法論に興味があります。
言い換えれば、明らかなボトルネックのない分散システムが与えられた場合、そのパフォーマンスをどのように調査して改善するのでしょうか?
私は長所と短所がある方法を使用しました。長所は、それが機能することです-修正されると、素晴らしいパフォーマンスが得られる問題を見つけます。短所は、かなりの量の手作業であることです。
私も本を書き、その方法を含めました。作業は、タイムスタンプ付きのイベント ログを収集し、それらを共通のタイムラインにマージすることです。次に、非同期エージェントのネットワークを介して関連するメッセージの流れを追跡しながら、それを注意深く調べます。探しているのは、不必要なメッセージ サイクル、または必ずしも発生する必要のない遅延です。例えばこちらの写真を見ると、「ステータスをDBに投稿する」というタスクが原因で、メッセージの受信が遅れています。それが理解されると、投稿は実際には別のスレッドで行うことができます。