1. 程式人生 > >記一次伺服器掛掉,cpu佔用過大的問題

記一次伺服器掛掉,cpu佔用過大的問題

凌晨一點電話:咚咚咚


喂:伺服器掛掉了,你查檢視問題,然後處理下。

我:好的。


從日誌看幾乎所有的logic日誌全都掛掉,不再列印日誌,然後logic程序僵死,佔用cpu百分90多,有些可怕。


第一反應是邏輯迴圈問題。

因為是公司自己的框架採用lua編寫。單程序單執行緒。

網上找了很多這個,查了下都是top -H , jstack, gdb等。

但是對於我們的專案不管用啊,jstack不能用,gdb沒有,top -H 是單執行緒單程序。就顯示一行沒了。


然後看了下掛掉的日誌,都是在凌成00:00分掛掉的,然後想到了定時器問題,(我們專案會在這個時間點,定時處理一些事情)


加上當天更新了資料片,新的表格。然後使用git log 檢視到底策劃加了什麼表格,對比定時器的問題。找到新增的新表格。


然後逐個對比,這個效率很慢,可是沒辦法,就這樣磨著磨著,發現策劃加的一個表定時器時間設定為-1.


這個肯定有問題啊,  然後通過封裝的定時器程式碼,找到原始碼,添加了一個驗證

assert(time>=0 )

殺死對應的logic程序,重啟,然後全服更新程式碼。


至此解決。