rsrylogd占用内存过高

594 阅读1分钟

现象:K8s一worker节点频繁性的驱逐pod,内存居高不下,79%~90%之间,一段时间后cpu开始飙高,知道100%,worker节点直接宕机

现对worker节点进行故障排查

# 远程清理docker
expect -c "
spawn ssh -t root@worker2 docker system prune -af
expect {
\"*assword\"{set timeout 300; send \"xxxxpwdxxxx"\r\";}
\"yes/no\"{send \"yes\r\"; exp_continue;}
}
expect eof"

# 连接worker节点
ssh root@ip
# 查看磁盘利用率
df -h
# 查看资源使用情况
top
大写M排序
# 发现rsyslogd进程占用了18G内存
# rsyslog是一个日志管理系统
# 查看相关日志发现报错
61 10:50:42 server07 rsyslogd[5011]: fopen() failed: 'No space left on device', path: '/var/lib/rsyslog/imjournal.state.tmp' [v8.24.0 try http://www.rsyslog.com/e/2013 ]\
# 删除 /var/lib/rsyslog/imjournal.state.tmp
rm -rf /var/lib/rsyslog/imjournal.state.tmp
# 配置rsrylog的最大物理内存为1G
systemctl edit rsyslog.service --full
# [Service]下添加 LimitRSS=1073741824
# command+o 回车 command+x
# systemctl加载配置并重启rsrylog
systemctl daemon-reload
systemctl restart rsyslog.service
# top M 观察内存情况,搞定!