稼働状況は「はい/いいえ」では答えられない
MCP サーバーの中には、同時に落ちていて動いているものがあります。接続の 三分の一を切断するサーバーを見つけました。ブラウザでは完全に正常に見えます。
ブラウザでは問題なく開くサーバーを、なぜ到達不能と表示したのか。読者からそう尋ねられました。読者も私たちも正しかったのです。そのサーバーはたいていは応答し、残りでは接続を切ります。
一台のサーバー、二つの真実
二十五回リクエストを送りました。およそ三分の一がこう返ってきます。
curl: (56) Recv failure: Connection reset by peerタイムアウトでも TLS の問題でもありません。接続が確立し、リクエストが送られ、そして応答の途中でサーバーが切断します。リクエスト間隔を三秒あけても何も変わらなかったので、レート制限でもありません。私たち自身の計測も一致しています。そのホストへの探索の 31% が失敗します。
一回の確認が嘘をつく理由
三回に一回失敗するサーバーなら、一度確認してもほとんど何もわかりません。三分の二の確率で「正常」、三分の一で「故障」と判断することになり、どちらの答えも同じくらい間違っています。真実は状態ではなく割合だからです。
アラートではさらに厄介です。二回連続の失敗は障害に見えます。失敗率 31% なら、二回連続はおよそ 9% の確率で起こります。二時間おきに確認していれば、ほぼ一日一回です。それは障害ではなく、算術です。
どれくらい多いのか
確実に動いているとも確実に止まっているとも言えないサーバーをカタログ全体から探しました。約 180 台が不安定な中間にあり、失敗率は 10% から 90% の間です。エコシステムのごく一部ですが、混乱の大部分を占めます。
どう扱うか
- サーバーを選ぶなら、バッジではなく割合を読んでください。70% のサーバーは本番環境で、三回に一回、静かに失敗します。
- サーバーを運用しているなら、断続的な接続リセットは通常アプリ本体ではなく、その前段のプロキシやロードバランサーを指しています。アプリのログはきれいなままに見えます。
- 監視を作るなら、一回のサンプルで判断しないでください。連続を条件にし、失敗率を明示してください。