手动回收mysql服务内存脚本
Mysql服务内存占用不释放,暂时未排查到原因,临时通过glbc来释放MySQL内存:
#/bin/bash
# 总内存
TOTAL_MEM=$(free | awk 'NR==2 {print $2}')
# 剩余内存
FREE_MEM=$(free | awk 'NR==2 {print $NF}')
# $((...)) 算术运算,内部的小括号与外部的 $((...)) 都不会启动新的子进程
USED_PERCENT=$(( 100-(FREE_MEM*100/TOTAL_MEM) ))
# 内存使用大于70%就执行清理
if [ ${USED_PERCENT} -gt 70 ];then
MYSQLD_PID=$(pidof mysqld)
# -n 判断字符串长度是否非0
if [ -n "${MYSQLD_PID}" ];then
gdb --batch --pid ${MYSQLD_PID} --ex 'call malloc_trim(0)' &>> /dev/null
else
echo "mysqld进程没有找到!"
fi
else
echo "内存使用率在安全范围内:$USED_PERCENT%"
fi