前言
昨天遇到了伺服器很卡的問題,重啟下及清理下伺服器,當時正常了,但今天又重新遠端伺服器時,一直在連線中,最終是超時失敗處理;
其實這個問題早幾次就已經出現過,但沒上心,畢竟重啟大法好,而且可能是因為一直以來的指令碼導致的,因此沒怎麼管;
但現在是重啟後,就沒跑指令碼了,依然出現這情況,不能忍,因此就一起看看這個問題,篇幅很短,2-3分鐘即可;
跟進
第一反應就是上阿里雲遠端看看,看到的內容是這樣的:
密密麻麻一堆內容,但都是重複的,隨便挑個關鍵詞,直接某度搜尋,如systemd-logind
,會看到以下內容:
看描述,跟Jb遇到的相似,那這玩意是什麼?
看描述,是個系統服務啊,難道正如網上說的,這玩意會一直佔用CPU?因此嘗試了網上提供的解決方案-關閉systemd-logind
:
systemctl stop systemd-logind
複製程式碼
但是試了下,不管用啊。。
那就說明問題不是它,但是呢,一直遠端失敗,而且服務很卡,感覺就是CPU一直被佔用,那就用top
來看下吧:
但是,因為伺服器太卡了,輸入一個字母等半天,因此決定重啟伺服器,重啟後用top
觀察:
結果發現一起來,就各種awk、sh、kill
等各種系統命令佔用那麼高的CPU?第一反應就是什麼鬼?
繼續放著觀察,結果過幾分鐘,佔比開始變了:
syslog
是系統日誌啊,為啥會一直記錄日誌?
繼續往下翻top
的記錄,底部有新發現:
後面的記錄都是跟上圖一樣,重複的;那問題來了,systemd_conjestion_helper
是什麼?
一開始以為是系統指令碼,但是網站找了半天,沒有這樣的檔名啊;既然如此,就下載下來吧;
有興趣的小夥伴可自行下載:
連結:https://pan.baidu.com/s/1h6q4oOxHJL7BjS0fwas_dQ
提取碼:ovbb
複製程式碼
開啟檔案,看頂部註釋資訊:
寫著makeself
,不知道是什麼,就網上找下:
這,一重啟伺服器就自動跑這個,是執行程式,並且網上沒查到類似資訊,這TM是被搞了?
順著上面的截圖,這個systemd_conjestion_helper
是在tmp
目錄,那就看看這個目錄下有什麼?
臥槽,好多東西,因為不懂,所以不知道有啥用,但是systemd_conjestion_helper
絕逼有問題。。
再看看,下面有個root
目錄,裡面全都是.sh
。。
再看回剛下載的systemd_conjestion_helper
檔案,內容太多了,不會一一看,直接搜尋.sh
,發現有匹配結果:
行吧,雖然不知道這些是什麼,但是感覺跟它們脫不了關係,因此直接把帶有systemd
的檔案全部rm
掉;
然後再重啟伺服器,開機持續觀察top,至今4個小時暫時還沒問題,至少還沒出現單項佔用CPU超過5%的程式;
小結
這問題應該是算到此結束了,這個問題,並不難,但是因為對這塊不瞭解,花了很多時間去嘗試跟查閱資料,也從沒懷疑過伺服器被幹的情況,一直以為是自己伺服器太爛導致的,也側面反映出自身對Linux這塊的不熟悉;
至於為什麼會被搞,可能是之前在公網搭了個上傳檔案的功能,雖然只開放了幾天,但因為寫了個帖子,可能就被人利用了,建議能別放公網就儘量放內網。。
最後謝謝全乾工程師@老羅的幫忙,不然一個人折騰半天都不知所云;