因为内存满载等原因,Memcached 在后台可能出现突然崩溃挂掉的情况。进而影响使用 Memcached 的网站发生崩溃、无法访问。
可利用以下 .sh 脚本实现 Memcached 状态自动检测,在进程停止挂掉后,自动重新 Memcached。
#!/bin/sh
PATH=$PATH:/etc/init.d/memcached
# 用 ps 命令查看 Memcached 进程状态
MM=`ps -aux |grep "memcached" |grep "11211" |grep -v "grep" |wc -l`
# if 语句判断进程是否存在,如不存在,输出日志记录并自动重启 Memcached 服务
if [ "$MM" == "0" ];
then
echo "$(date): Memcached is stop." >> /root/log/memcached.logs
/etc/init.d/memcached start
else
echo "$(date): Memcached is ok." >> /root/log/memcached.logs
fi
可将以上脚本保存成 .sh 文件使用。
由于编码等问题,建议使用 Linux 中 vim 或 cat 直接编辑。
注意:如使用宝塔面板,可直接使用以上脚本,如是其他面板或者环境,可参照以下说明自己手动调整:
1、第2行:"/etc/init.d/memcached" 可替换成 memcached 路径地址;
2、第8、11行:"/root/log/memcached.logs" 为 log 文件路径,可根据实际情况做更改;log 文件请提前创建,否则会产生报错;
3、第9行:"/etc/init.d/memcached start" 为 memcached 的启动命令,适用于宝塔面板,其他环境请根据实际情况适当更改。
最后,可将脚本添加到计划任务自动执行。
以下以 “每5分钟执行一次,脚本路径 /root/memcached_check.sh” 添加计划任务命令为例:
*/5 * * * * /bin/bash /root/memcached_check.sh
参考资料:
https://www.bt.cn/new/btcode.html
https://blog.51cto.com/u_15127608/4733782
https://www.binbinbiji.com/zh-cn/jianzhanjiaoliu/2251.html