Zabbix High swap space usage

问题现象

Zabbix 出现Highswap space usage(less than 50% free)告警,提示交换分区空间使用率超过50%

Zabbix交换分区使用率过高排查_占用量

Zabbix交换分区使用率过高排查_java_02

处理过程

1. 确定swap分区是否已占满

free -h

Zabbix交换分区使用率过高排查_重启_03

登录Zabbix服务器检查内存情况,检查发现Linux服务器空闲的内存还有不少,但是使用了大量的Swap空间(超过50%)

2. 统计swap高占用进程

for file in /proc/*/status; do awk '/VmSwap|Name/{printf $2 " " $3}END{print ""}' $file; done | sort -k 2 -n -r | more

Zabbix交换分区使用率过高排查_android_04

Zabbix交换分区使用率过高排查_java_05

Zabbix交换分区使用率过高排查_java_06

不断下拉发现postmaster、zabbix_server进程数量相对比较多且内存占用量较大,虽然php-fpm有20多个进程,但是内存占用量比较小,gnome等其他进程数量则相对更少

3. 统计高进程内存占用量

  • 统计zabbix_server进程数量
for file in /proc/*/status; do awk '/VmSwap|Name/{printf $2 " " $3}END{print ""}' $file; done | sort -k 2 -n -r | grep -wi "zabbix_server" | wc -l

Zabbix交换分区使用率过高排查_java_07

  • 统计zabbix_server进程占用内存大小
for file in /proc/*/status; do awk '/VmSwap|Name/{printf $2 " " $3}END{print ""}' $file; done | sort -k 2 -n -r | grep -wi "zabbix_server" > temp.ini

sum=0

for mem in `cat temp.ini | awk -F ' ' '{print $2}'`; do sum=$[$sum+$mem]; done

echo $sum

Zabbix交换分区使用率过高排查_android_08

同理可以计算postmaster等其他进程内存使用量

Zabbix交换分区使用率过高排查_java_09

最后统计发现,zabbix_server共有866个进程,占用2.2G的swap内存,接近swap已使用空间的大部分,属于异常情况,需要重启zabbix_server服务

4. 重启zabbix服务

  • 重启服务前建议对虚拟机进行快照,保存当前状态,便于快速回滚
systemctl restart zabbix-server

Zabbix交换分区使用率过高排查_重启_10

检查swap交换空间内存发现已经恢复正常

zabbix数据大量写入swap空间明显属于异常,可能是某个bug导致数据并未正常写入磁盘空间,有待进一步定位排查

End

  • 欢迎关注,感谢支持!

Zabbix交换分区使用率过高排查_java_11