この記事は、前の記録の続きです

前の記録(毎朝動いているはずのAI自動化41本を5.3日ぶん数えたら、最大91%が発火すらしていなかった)で、当社の自社メディア更新が最大91%抜けていた、という都合の悪い数字を出しました。

穴が空いているとわかったら、塞ぐしかありません。塞ぎ方は2つあります。原因を突き止めて直すか、止まったら自動で叩き起こすか。原因(1回の処理が数十分と長いこと)の機序はまだ追い切れていないので、先に後者を入れました。「見張り役(watchdog)」です。

結論から言うと、この見張り役は導入初日から仕事をしました。止まっていた3本を自動で叩き起こし、59時間止まっていた記事生成を51分かけて復活させました。 ただし、見張り役自身にも正直な弱点があります。それも含めて載せます。


用語を3つだけ

  • 見張り役(watchdog) … 他のジョブがちゃんと動いているかを定期的に見回り、止まっていたら再始動させる番人のプログラムです。今回は1時間ごとに動かしています。
  • 「止まっている」の判定 … 2通りで判断します。①起動した記録(run_start)だけ残って、終了の記録(run_end)が一定時間経っても来ない。②最後に成功してから、そのジョブの予定間隔+余裕を過ぎても新しい成功がない。このどちらかなら「止まった」とみなします。
  • クールダウン … 同じジョブを短時間に何度も蹴らないための待ち時間です。一度再始動したら、次に蹴るまで一定時間あけます。暴走を防ぐ仕組みです。

見張り役に持たせた「暴走しない」工夫

自動で再始動する仕組みは、作り方を間違えるとそれ自体が暴走します。全ジョブを一斉に何度も蹴り続けて、Macを過負荷で落とすからです。そうならないよう、3つの箍(たが)をはめました。

  1. 保守的なしきい値。「予定間隔+余裕」を過ぎて初めて止まったと判断します。少し遅れただけで蹴りません。
  2. クールダウン。一度再始動したジョブは、しばらく再始動の対象から外します。
  3. 1回あたりの再始動上限。1回の見回りで再始動するのは最大3本まで。多数が同時に止まっていても、一気に蹴らず、毎時すこしずつ回復させます。

導入初日に、実際に起きたこと

2026年7月23日 19:00、見張り役の初回の見回り。

見回った結果、7本が止まっていると判定されました。 そのうち上限の3本を再始動し、残る4本は「今回の上限に達したので次回に回す」と記録されました。

判定 ジョブ 状態
再始動した 朝の運用チェック 成功実績なし
再始動した 補助金の鬼 データ更新 成功実績なし
再始動した 補助金の鬼 記事生成 最後の成功から59.4時間(許容30時間)
次回に回す 補助金の鬼 ストック生成 上限3に到達
次回に回す AIの鬼 note自動投稿 上限3に到達
次回に回す UchUchU 記事生成 上限3に到達
次回に回す UchUchU 週次レビュー 上限3に到達

そして、再始動した3本がどうなったか。

  • 補助金の鬼 記事生成 … 再始動して約9分で完走。その日の記事が1本、無事に生成されました。
  • 補助金の鬼 データ更新 … 再始動して約51分で完走
  • 朝の運用チェック … 再始動はしたものの、実行の中で「UchUchUの日次処理が3日前から動いていない」ことを検知して、エラーで終了しました。

最後の1本が、地味にいちばん価値がありました。見張り役が叩き起こしたジョブが、さらに別の止まっているジョブを見つけてきたからです。穴の底に、もう一つ穴があったわけです。


正直に書く、見張り役の弱点

この仕組みは初日から役に立ちました。が、万能ではありません。都合の悪いところも書きます。

  • 見張り役自身も、cronで動く1本のジョブです。 つまり、前の記事で書いた「cronが抜ける」問題は、この見張り役にも起こりえます。番人が寝ていたら、誰も番をしていません。 番人を見張る仕組みは、まだありません。
  • 一度に3本しか戻せません。 初日は7本止まっていて、4本は次の時間に持ち越されました。同時多発で止まると、全部が戻るまで数時間かかります。
  • これは対症療法です。 なぜメディア更新が数十分もかかり、抜けるのか——その根本原因は、まだ突き止められていません。叩き起こしているだけで、倒れる理由は直っていない。
  • 導入したてで、実績はまだ初日の3本だけです。「うまくいっている」と言い切るには早い。数週間まわして、再始動の回数と成功率がどう出るかを、また数えて報告します。

それでも、この一手には意味があります。前の記事の問題は「止まっても誰も気づかない」ことでした。見張り役は、少なくとも気づいて、動く。気づかないまま何日も止まっているより、はるかにましです。


関連する記録


まとめ

  • メディア更新が抜ける穴に対し、根本原因を直す前に「止まったら自動で再始動する見張り役」を入れた。
  • 見張り役は1時間ごと・1回3本まで・クールダウンありで、暴走しないよう箍をはめている。
  • 導入初日、7本の停止を検知し3本を再始動。59時間止まっていた記事生成を51分かけて復活させた。
  • 叩き起こしたジョブが、さらに別の停止ジョブを発見した。
  • 弱点も正直に:番人自身がcronで動くため番人が寝たら終わり、一度に3本しか戻せない、根本原因は未解決、実績はまだ初日だけ。
  • 止まっても気づかないより、気づいて動くほうが、ずっとまし。数週間まわしてまた数える。