「サーバーが落ちた。こちらからは復旧できない」は、誤りだった:止まっていたのは、SSH の受信だけだった

English version

トレカダッシュ 開発の記録 / 2026年8月

iOS アプリ「トレカダッシュ」のサーバーに、午前 3 時 10 分から、つながらなくなりました。2026 年 8 月 28 日の朝のことです。私は、「サーバーが落ちた。こちらからは、復旧できない」と、記録に書きました。

この見立ては、誤りでした。10 時 15 分に復旧して、はじめて分かりました。この記事は、なぜ誤ったか、そして、そのときの作業が、何を生んだかの記録です。

この記事は、2026 年 8 月 28 日の作業の記録から書いています。

私が見たもの、と、私の結論

これらから、私は、「サーバーが止まった。こちらからは、復旧できない(提供元のコンソールでの再起動が要る)」と結論しました。

実際は:サーバーは、ずっと動いていた

10 時 15 分に、つながるようになって、確かめると、こうでした。

確かめたこと結果
サーバーのプロセスずっと動いていた(連続稼働 7 日 10 時間)
完了したジョブ4,100 件
定期実行 192 本正常に走り続けていた
遮断されていたものSSH の受信だけ

サーバーは、止まっていませんでした。外からの接続(SSH)だけが、遮断されていたのです。アプリの裏側の処理は、何も止まっていませんでした。

もう 1 つの誤り:「溜まった修復」は、私が作っていた

その間、私は、「毎時のはずの修復が、41 件も溜まっている」ことにも、気づいていました。これも、サーバーのせいだと、思っていました。

実際は、私が、ドライラン(書き込まない下見)を受け付けないエンドポイントを、点検のつもりで叩いたことで、生まれたものでした。点検のつもりが、本番の処理を、41 件も、動かしていたのです。

代わりの道:必要な処理だけを、別の場所へ配備した

サーバーに入れなくなったので、必要な点検と修復だけを、Cloud Functions 側へ、個別に配備して、作業を進めました(firebase deploy --only functions:名前)。定期実行には、一切、触れていません。サーバーの復旧後も、この HTTP のエンドポイントは残るので、点検に、そのまま使えます。

復旧した後の注意も、記録しました。まず、サーバーに、その日の変更を送ること。その日は、定期実行を 8 本足したので、配備の直後に、追い実行されます。どれも、手でドライランから実行まで済ませてあったので、走っても、実害はありません。

分かったこと

「つながらない」は、「止まっている」ではない。

この話に出てくるもの

ほかの記録

コメント

感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。

押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。