Linux
很少使用的 Ubuntu 12.04 伺服器每 8 小時顯示一次高 CPU / 磁碟 I/O
我有一個基本的基於雲的伺服器,只在這里和那裡用於測試。自從我安裝 New Relic(昨天)以來,它每 8 小時報告一次高磁碟 I/O 和高 CPU 問題(>90%),每次總共 25 分鐘(大約)。
New Relic 似乎顯示了這些問題:
(a) very high CPU issue with "find (root)" (b) high usage of dev/xvda1
我的伺服器提供商不知道問題出在哪裡,因為他們最終什麼也沒看到。
- 我的日誌顯示使用率為零 - 當時沒有訪客。
- 該伺服器上的 PHP/Apache 沒有問題(根據 New Relic)。
- 一些安全測試表明伺服器沒有受到威脅。
這是什麼意思呢?有什麼我需要做的嗎?
(a) “查找(根)”的 CPU 問題非常高
這可能是重建定位數據庫的更新腳本,或者出於某種原因掃描您的磁碟的其他腳本。如果您
ps auxwwf
在問題發生時鍵入,則可以看到程序樹;查找導致問題的“查找”程序,然後查看執行它的內容(可能類似於“updatedb”)。
丹(曾經)很可能是正確的。我用這個文章和另一個文章來解決我的問題,
我有一個有類似問題的 VMWare Linux Mint 17.1。啟動幾分鐘後,90-100% 的 CPU 消耗了 15 分鐘左右——它有一個相當大的共享目錄,其中包含大量遺傳數據。
我使用 top 來獲取查找程序 ID(12788)。由於它消耗了所有 CPU 功率,因此它是最上面的第一行。這裡的一個區別是違規過程由“沒有人”擁有。
然後我執行 ps -auxwwf 並找到了這棵樹——注意最後一行的 find 命令。
root 1334 0.0 0.0 12780 960 ? Ss 07:15 0:00 anacron -s root 12676 0.0 0.0 4440 652 ? S 07:20 0:00 \_ /bin/sh -c run-parts --report /etc/cron.daily root 12677 0.0 0.0 4332 648 ? S 07:20 0:00 \_ run-parts --report /etc/cron.daily root 12749 0.0 0.0 4440 652 ? S 07:20 0:00 \_ /bin/sh /etc/cron.daily/locate root 12754 0.0 0.0 4440 744 ? SN 07:20 0:00 \_ /bin/sh /usr/bin/updatedb.findutils root 12762 0.0 0.0 4440 336 ? SN 07:20 0:00 \_ /bin/sh /usr/bin/updatedb.findutils root 12788 0.0 0.0 86152 2384 ? SN 07:20 0:00 | \_ su nobody -s /bin/sh -c /usr/bin/find / -ignore_readdir_race \( -fstype NFS -o -fstype nfs -o -fstype nfs4 -o -fstype afs -o -fstype binfmt_misc -o -fstype proc -o -fstype smbfs -o -fstype autofs -o -fstype iso9660 -o -fstype ncpfs -o -fstype coda -o -fstype devpts -o -fstype ftpfs -o -fstype devfs -o -fstype mfs -o -fstype shfs -o -fstype sysfs -o -fstype cifs -o -fstype lustre_lite -o -fstype tmpfs -o -fstype usbfs -o -fstype udf -o -fstype ocfs2 -o -type d -regex '\(^/tmp$\)\|\(^/usr/tmp$\)\|\(^/var/tmp$\)\|\(^/afs$\)\|\(^/amd$\)\|\(^/alex$\)\|\(^/var/spool$\)\|\(^/sfs$\)\|\(^/media$\)\|\(^/var/lib/schroot/mount$\)' \) -prune -o -print0
我沒有安裝 rpm,所以我使用了 Synaptic 包管理器 GUI 並在包和名稱中搜尋“updatedb”。與 updatedb 一起安裝的唯一軟體包是“locate”。然後我刪除了定位包。
命令行工具的另一個好答案是在 Unix Stack Exchange 上關於禁用 locate/updatedb