最近一段時間, 經常發現生産環境上有些伺服器的 CPU 使用率比其它高很多. 檢查下來, 都不是我們自己的應用程式導緻的, 細分下來有兩種, 一種是 puppet agent 導緻的(診斷 puppet agent 導緻的 CPU 使用率非常高的問題), 另外一種就是 twagent 導緻的.
- 首先, 通過 top -i -H 可以看到這個程序十分耗 CPU
-
然後, 通過 ps aux | grep twagent | less -w 可以看到它是怎麼被啟動的
xiatian 28604 0.0 0.0 10476 2084 pts/7 S+ 03:33 0:00 grep --color=auto twagent
root 31695 31.9 0.0 494272 11340 ? Ssl May22 60485:45 /opt/tripwire/agent/twagent --service.mode=true --service.type=SysV --agent.dir=/opt/tripwire/agent --plugins.dir=/opt/tripwire/agent/plugins --tools.dir="/opt/tripwire/agent/tools" --data.dir="/var/cache/tripwire" --lock.dir="/var/lock/tripwire" --log.dir="/var/log/tripwire" --spool.dir="/var/spool/tripwire"
-
然後, 執行 sudo strace -C -e trace=all -p 31794 (這裡一定是要那個耗CPU 的線程, 不是程序号), 可以看到N多這樣的 event:
statfs("/var/spool/tripwire", 0x7fe61a247450) = -1 ENOENT (No such file or directory)
statfs("/var/spool/tripwire", 0x7fe61a247450) = -1 ENOENT (No such file or directory)
-
然後執行 添加檔案夾 (我這裡是 root 起的這個程序, 是以用 root 加一個檔案夾)
sudo mkdir /var/spool/tripwire
- 然後呢, 問題消失了