Linux 下限制某进程的 CPU 使用率

最近游戏服务器出了点小问题,某个日志文件以每秒数 MB 的速度增大,最后达到 28GB 吃满了磁盘…

secagent-log

这个叫 Secagent 的进程都不知道是干嘛的,日志都是重复这两句错误。

貌似是很专业的东西,能搜到的资料太少,删掉 log 文件夹就好了…

[zenlib] 1 Pipe is full or data small?,Some data can't put to pipe. Please increase and check. nodesize=120, freesize=38
[ERROR][virtual int SecAgentApp::proc(size_t&)], proc sdk msg error, ret = 5014

然后更严重的问题是,Secagent 这个进程会发疯般的占用 CPU 。

无法从根源上解决问题,只好用最愚蠢的办法了,直接限制这个进程的 CPU 使用率。

在 CentOS 上安装 Cpulimit :

wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
2unzip cpulimit.zip
3cd cpulimit-master
4make
5sudo cp src/cpulimit /usr/bin

ps 我的 Linux 端连 wget 和 zip 都被精简掉了,只好解压好才传过去。

安装好 Cpulimit 后,使用 top 命令查看进程的 PID ,然后就可以用它来限制进程的 CPU 使用率了:

cpulimit -l 0.1 -p 1346    #0.1指CPU使用率限制为0.1%,1346是进程PID

linux-cpulimit

限制了 CPU 使用率后日志的问题也随之解决了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注