由於 Landscape-sysinfo CPU 過度消耗,Ubuntu 11.04 伺服器掛起
我在一個 Amazon EC2 微型實例上執行了一個簡單的伺服器(基於 Ubuntu 11.04),其目的只是為了協調一些網路伺服器的活動。這台機器執行了幾個星期,但現在經常掛起,其 CPU 已紅線為 100%。
我通過 SSH 登錄到機器並執行了一個
top
,它顯示該landscape-sysinfo
程序是消耗所有系統資源的肇事者。Apstree
透露了它的位置:init─┬─atd ├─cron ├─dhclient3 ├─dovecot─┬─2*[dovecot-auth] │ ├─3*[imap-login] │ └─3*[pop3-login] ├─6*[蓋蒂] ├─master─┬─pickup │ └─qmgr ├─mountall ├─mysqld───11*[{mysqld}] ├─rsyslogd───3 * [{rsyslogd}] ├─sshd─┬─sshd───sshd───bash │ ├─sshd───sshd───bash───top │ ├─sshd───sshd───bash───pstree │ └─sshd───sh───run-parts───50-landscape-sy───landscape-sys+ udevd───2*[udevd] ├─upstart-socket- 新貴-udev-br └─vsftpd
有問題的程序在此處列為 的最後一個子程序
sshd
。如果我手動 killlandscape-sysinfo
,機器會恢復正常 - 直到程序自發重生,通常是幾分鐘後。(我可以“擔保”sshd
上述樹中的其他程序。它們是合法的。)我不知道為什麼
landscape-sysinfo
會隨機生成自己。我完全不知道為什麼它是sshd
.我顯然對在我的機器上執行一個我無法解釋的 SSH 程序感到非常興奮。最初我擔心入侵/特洛伊木馬/後門,所以我執行
chkrootkit
andrkhunter
,但它們都乾淨了。有誰知道是什麼導致這個過程瘋狂?關於如何阻止它重生的任何想法?
不久前我弄清楚了問題的實際原因,並認為我應該在這裡記錄它,以便其他可能遇到類似問題的人。事實證明,根本原因比我最初預期的要棘手和復雜。
簡而言之,
run-parts
一直工作正常。它的失控只是另一個問題的徵兆。失敗鏈看起來像這樣:1)在一台完全不同的機器上,
lsyncd
(一個基於 的文件同步實用程序rsync
)執行失控,原因超出了我們在此關注的範圍。不過,我們擔心的是,lsyncd
它試圖通過 SSH 與這個微實例(這表明問題)同步文件。
因為通過 SSH 建立了幾十個同時連接,每個似乎都受到 Ubuntu 預設提供
lsyncd
的 SSH 登錄橫幅的歡迎。landscape-sysinfo
這解釋了什麼landscape-sysinfo
是 SSH 以及為什麼它是 SSH 的子級。看起來這run-parts
是罪魁禍首,但實際上問題是機器正被 SSH 連接轟炸。使問題更加嚴重的是,這是 EC2 上的一個微實例,我後來發現亞馬遜嚴重限制了 CPU 消耗穩定超過某個門檻值的微實例。(有關詳細資訊的出色解釋,請參閱Greg’s Ramblings。非常感謝 Greg 的那篇文章!)
因此,機器在被 SSH 連接轟炸時執行緩慢,然後在節流啟動後變得無法使用。
謎團已揭開!