misskey
misskey copied to clipboard
beforeShutdownハンドラーはうまく機能してなさそう
💡 Summary
beforeShutdownハンドラーはほとんどの環境でうまく機能してなさそう https://github.com/misskey-dev/misskey/blob/4ac75243e5a567ef3b7e2f1b068429648b86c24f/packages/backend/src/misc/before-shutdown.ts
非Clusterモードでは機能している。
Clusterモード (default) では workerプロセスにだけシグナルが飛んできたときには確かに機能している。 ただし、masterプロセスなどにシグナルが飛んできたときには、すぐ (5msくらい) に終了させられたりして機能してなさそう。
node (Misskey master)
=> node (Misskey worker)
Docker では tiniがシグナルを下に飛ばしたりしないのでそもそもシグナルが飛ばなそう。
tini
=> node (Misskey master)
=> node (Misskey worker)
チャートの保存間隔は20分間隔だけど、beforeShutdownがほぼあてにならないのでもっと短いほうがいいかも。 https://github.com/misskey-dev/misskey/blob/4ac75243e5a567ef3b7e2f1b068429648b86c24f/packages/backend/src/services/chart/index.ts
🥰 Expected Behavior
beforeShutdownの処理が実行される
🤬 Actual Behavior
beforeShutdownの処理が途中で終わってしまったり、そもそも動かなかったりする。
📝 Steps to Reproduce
- beforeShutdownに数秒など長めの処理を追加する
- 各プロセスにシグナルを飛ばしてみる
📌 Environment
develop Ubuntu
なるほど👀
チャートの保存間隔は20分間隔だけど、beforeShutdownがほぼあてにならないのでもっと短いほうがいいかも。
- 運用上プロセスが終了することってそこまでないかも?
- DBへの書き込みは重くなりがちだからできるだけ減らしたい
- チャートの精度は(もちろん高いに越したことはないけど)少し低くても問題にならなそう
と思うから特に変えなくても良いかなと思ったり
運用上プロセスが終了することってそこまでないかも?
たぶん起きるのはほぼインスタンスを再起動したとき
感覚だから方針はなんとも言えないけど
- beforeShutdownほぼ効いてないと思うので(あと、開発時にCtrl+C後に出てきてなんとなく邪魔なので)廃止
- 20分欠けると誤差最大33%くらいになるので、10分(17%)とか 5分(8%)とかにする
とかでもいい気はするのだわ。