临时解决komari agent因高连接数导致CPU占用异常

发布于 / 系统运维 / 0 条评论

故障现象:

我的komari接入了20+台机器,但是问题在于其中三台机器,其中1C的机器会CPU直接100% 2C/4C的机器会占用30%~50%,使用htop看到agent进程在疯狂占用机器性能

排查思路:

先想一下为什么偏偏是这几台机器出问题,本人有强迫症,所有的机器都必须dd成一个模板,大家系统都是一样的,而这些机器全都是没有跑传统服务的,环境没有折腾过,全是纯docker服务,凭什么就你们三个有问题,后来通过find / -type f -name “komari*” 寻找有没有日志的时候发现这三台机器在扫描/proc目录的时候会卡很久,也就是说这三台机器的进程或者连接数是比较高的

通过查阅github上的开发文档得知,komari是存在扫描网络连接数的功能的,那么大概率问题就出在这

处理步骤:

让进程只能看到自己创建的连接,无法通过扫描 /proc 看到全局的连接数

mount -o remount,rw,nosuid,nodev,noexec,relatime,hidepid=invisible /proc

添加一个普通用户,给他自己的工作目录授予权限

useradd -M -s /usr/sbin/nologin komari_user
chown -R komari_user:komari_user /opt/komari/

编辑服务文件

nano /etc/systemd/system/komari-agent.service
[Unit]
Description=Komari Agent Service
After=network.target

[Service]
User=komari_user    #设置用户
Group=komari_user   #设置用户组
Type=simple
ExecStart=/opt/komari/agent -e https://xn--9kqp11i6bk.eu.org -t PTpFk1K8WUzWRQmE1t1WAA --disable-web-ssh
WorkingDirectory=/opt/komari
Restart=always

#这里要删掉原本的root用户

[Install]
WantedBy=multi-user.target

重启服务

systemctl daemon-reload
systemctl  restart komari-agent

观察komari_user用户是否能正确读取/proc内容,如果很少或者为0就对了

runuser -u komari_user -- cat /proc/net/tcp

观察进程是否已经成功权限降级

ps aux | grep agent

观察进程是否已经不再占用CPU

htop

如果问题解决了,可以修改挂载目录永久生效

nano /etc/fstab
proc /proc proc defaults,hidepid=invisible 0 0

警告:如果你的机器上有必须要监控/proc目录的软件,请勿跟着我改,我的机器都是纯docker服务,所以没什么影响

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
转载原创文章请注明,转载自: 沧水的博客 » 临时解决komari agent因高连接数导致CPU占用异常
Not Comment Found