有时候部署的jar包存在内存释放不及时导致服务假死或者卡顿情况,所以增加定时清除内存功能非常有必要。
[root@localhost ~]# crontab -e 添加定时
*/30 * * * * /root/satools/freemem.sh
==============================================================
关于定时器规则编写:
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
[root@localhost ~]# crontab -l 显示任务
[root@slave1 satools]# crontab -l
0 * * * * /usr/hdp/share/hst/bin/hst-scheduled-capture.sh sync
0 2 * * 0 /usr/hdp/share/hst/bin/hst-scheduled-capture.sh
*/30 * * * * /root/satools/freemem.sh
新增清除脚本:当内存小于100M的时候才执行,结合实际情况可以调整这个值
#!/bin/bash
used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`
echo "===========================" >> /var/log/mem.log
date >> /var/log/mem.log
echo "Memory usage | [Use:${used}MB][Free:${free}MB]" >> /var/log/mem.log
if [ $free -le 100 ] ; then
sync && echo 1 > /proc/sys/vm/drop_caches
sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches
echo "OK" >> /var/log/mem.log
else
echo "Not required" >> /var/log/mem.log
fi