我有以下脚本,它实际上检查Memcache服务器是否已关闭,它将启动Mmecache服务器。
#!/bin/bash
ps -eaf | grep 11211 | grep memcached
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
memcached -d -m 16 -p 11211 -u nobody
else
echo "eq 0 - memcache running - do nothing"
fi
如果我通过这种方式在crontab中设置此脚本每1分钟运行一次
* * * * * /usr/bin/memcached_autostart.sh
它会以任何方式降低服务器的性能吗?或者没关系??
请分享您的经验。
答案 0 :(得分:4)
它不会对服务器性能产生重大影响,但是当memcached已经运行时你需要让它保持沉默,否则它会每分钟向你发送一封电子邮件,从而浪费服务器时间和时间。
但是有更好的方法可以做到这一点。 systemd和daemontools项目都旨在监视服务并使它们保持运行,或者如果你使用的是sysvinit,你可以将memcached命令添加到/ etc / inittab,以便sysvinit在退出时保持重新生成。
答案 1 :(得分:2)
它会比不每分钟运行一次慢。通过
可以稍微优化您的代码pidof memcached || memcached…
你也可以代替守护memcached来做类似
的事情while true ; do memcached -m 16 -p 11211 -u nobody ; done
在这种情况下,它将在终止后重新启动而不进行轮询。但是你最好确保在经常重新启动时得到通知 - 这意味着出了问题。