他の環境では再現できない BTS の本番環境に問題があります。ここで我慢してください。
私たちのソリューションの一部であるオーケストレーション (orch1) は、直接バインドされたメッセージをメッセージ ボックスに送信し、一方のブランチで相互に関連付けられた受信シェイプを使用し、もう一方のブランチで遅延 (受信タイムアウトを実装) を使用してリッスン シェイプにステップ インします。遅延は 10 分に設定されています。
直接バインドされたリクエストは別のオーケストレーション (orch2) によって処理され、orch1 がそれを取得できるように、(再び直接バインドを介して) メッセージ ボックスに応答が返されます。
何が起きているかというと、このタイプの操作の約 50 回に 1 回、orch1 でタイムアウトが発生し、orch2 からの応答が戻ってきたときにルーティング エラーが発生します (これは、orch1 でのメッセージのインスタンス サブスクリプションとして予想されることです)。削除されました)。
奇妙なことに、orch1 でタイムアウトが発生するまで orch2 は初期化すらされません (次のスクリーンショットを参照)。
ここでは、orch1 がダイレクト バインド リクエストをメッセージ ボックスに送信し、10 分後にタイムアウトになっていることがわかります。リクエストは 11:26:31 に送信され、タイムアウトは 11:36:32 にヒットします。
これは orch2 のタイミングを示しています。ご覧のとおり、orch1 でタイムアウトが発生した後 (11:36:45) にのみ、受信シェイプがヒットされています。
奇妙なのは、orch1 と orch2 の両方が同じホストでホストされていることです。さらに、負荷分散されたクラスターがあり、このホストの 2 つのインスタンスを使用して作業を行うことができます。したがって、入ってくる作業を処理するために、orch2 には常に可用性があるはずです。しかし、そうではないようです。
私の現在の疑いは、両方のホスト インスタンスでスレッドが枯渇していることです。しかし、私の質問は
- これは賢明な疑いですか?
- 私は根本的に間違ったことをしていますか?
- スレッドに影響を与えるリッスン シェイプの使用について何かありますか?
ホスト スレッド設定を推奨レベル (MaxIOThreads = 100、MaxWorkerThreads = 100、MinIOThreads = 25、MinWorkerThreads = 25) に構成済みであることに注意してください。