毎日0:05付近にサーバーの負荷が上がるといった現象に頭を悩ませていたんですが、ようやく犯人を突き止めることができました。
犯人はupdatedb.mlocate
ちゃんでした。
pidstatを仕込んで定期的に見てみてもこれといって負荷の高いプロセスを発見することができなかったので、仕方なしに当該時間帯にtop
でプロセスをじっと眺めることでようやく犯人を特定することができました。。。
locate
コマンドで検索するためのインデックスを更新するやつみたいですね。locate
入れた記憶がないんですが…。
急に4000IOPSとかいくのはやめてほしい。。。
とはいえ、原因がわかったのでなにより。
どうしてあなたは0時に動くんですか
crontabの設定でcron.dailyは6時ごろに動くようになっているように見えるんですが、実際はdailyに入っているものは0時付近に動いているよう。
どう考えてもanacronが動かしているのはわかるんですが(1 5 cron.daily
なので5分のdelayも納得できる)、anacronのキック自体は誰が0時にやっているのかがよくわからず…。
crontab見ても、cron.d見ても…。
どこ見てもcronから叩いているように見えなくて……って調べてみると、ubuntu 18.04では/lib/systemd/system/anacron.timer
で設定されていると。
[Unit] Description=Trigger anacron every hour [Timer] OnCalendar=hourly RandomizedDelaySec=5m Persistent=true [Install] WantedBy=timers.target
なるほどhourly
…。
ここでtimerで1時間おきにキックしているので0時に動いてたんですね。なるほど納得しました…。
mackerelで監視してたおかげで気づけたので、あらためて監視大事だなぁ…と思ったところでした。
あと、普段サーバいじらないので、この辺とても勉強になります……。ひぃ。