最近 V2MM 频繁 502, 经查明是 MongoDB 经常挂掉,原因是内存太小,MongoDB 运行一段时间后消耗完全部内存就挂了,每次都需要手动重启 MongoDB 的服务进程。
这种事一而再再而三的发生后就想要自动重启 MongoDB,但是一番尝试后发现用 Cron 定时重启 MongoDB 的 systemd 服务很困难,只有用 Systemd 自己的定时器才行。
Systemd 的定时服务可以自己写 .timer
文件,也可以通过 systemd-run
来生成创建。于是乎一行命令即可:
sudo systemd-run --unit restart-mongod-daily --on-calendar "*-*-* 00:00:00" /usr/bin/systemctl restart mongod
--unit
指定了 unit 文件的名字,on-calendar
即创建 timer 服务。具体的命令格式参照 wiki 和 man。
如果是用 Cron 的话,cron 的运行环境和 systemd 的环境不一致,很多命令无法运行,但是可以通过工具将 cron 命令转换为 systemd timer 运行。参见: Systemd to Cron.