天天看點

使用 strace 解決 twagent 狂耗 CPU 問題

最近一段時間, 經常發現生産環境上有些伺服器的 CPU 使用率比其它高很多. 檢查下來, 都不是我們自己的應用程式導緻的, 細分下來有兩種, 一種是 puppet agent 導緻的(診斷 puppet agent 導緻的 CPU 使用率非常高的問題), 另外一種就是 twagent 導緻的.

  1. 首先, 通過 top -i -H 可以看到這個程序十分耗 CPU
    使用 strace 解決 twagent 狂耗 CPU 問題
  2. 然後, 通過 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"

  3. 然後, 執行 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)

  4. 然後執行 添加檔案夾 (我這裡是 root 起的這個程序, 是以用 root 加一個檔案夾)

    sudo mkdir /var/spool/tripwire

  5. 然後呢, 問題消失了

繼續閱讀