最近游戏服务器出了点小问题,某个日志文件以每秒数 MB 的速度增大,最后达到 28GB 吃满了磁盘…
这个叫 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
unzip cpulimit.zip
cd cpulimit-master
make
sudo 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
限制了 CPU 使用率后日志的问题也随之解决了。