misskey icon indicating copy to clipboard operation
misskey copied to clipboard

beforeShutdownハンドラーはうまく機能してなさそう

Open mei23 opened this issue 2 years ago • 2 comments

💡 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

  1. beforeShutdownに数秒など長めの処理を追加する
  2. 各プロセスにシグナルを飛ばしてみる

📌 Environment

develop Ubuntu

mei23 avatar Jul 08 '22 11:07 mei23

なるほど👀

チャートの保存間隔は20分間隔だけど、beforeShutdownがほぼあてにならないのでもっと短いほうがいいかも。

  • 運用上プロセスが終了することってそこまでないかも?
  • DBへの書き込みは重くなりがちだからできるだけ減らしたい
  • チャートの精度は(もちろん高いに越したことはないけど)少し低くても問題にならなそう

と思うから特に変えなくても良いかなと思ったり

syuilo avatar Jul 08 '22 11:07 syuilo

運用上プロセスが終了することってそこまでないかも?

たぶん起きるのはほぼインスタンスを再起動したとき

感覚だから方針はなんとも言えないけど

  • beforeShutdownほぼ効いてないと思うので(あと、開発時にCtrl+C後に出てきてなんとなく邪魔なので)廃止
  • 20分欠けると誤差最大33%くらいになるので、10分(17%)とか 5分(8%)とかにする

とかでもいい気はするのだわ。

mei23 avatar Jul 08 '22 11:07 mei23