服務響應慢怎么排查


來源

一個服務響應慢怎么排查

(一)負載均衡器進行檢查

1、檢查系統負載、內存使用情況:輸出表明是正常的;

2、檢查磁盤空間使用情況,未發現有分區被塞滿;

3、檢查系統日志,為發現異常輸出;

4、檢查應用程序運行情況,執行命令 ipvsadmin ,有轉發數而且數字不斷變化,這可以確認應用程序keepalived 及lvs都是正常的。

由上面幾點可確定負載均衡毫無問題,模擬故障切換,用戶的請求也能自動切換到輔助負載均衡器。

(二)檢查應用服務器

1、查看幾個服務器的負載,load值好幾十,嚴重超標;

2、查看磁盤空間使用情況,為發現使用率大於80%的分區;

3、查看系統日志,未發現文件系統損壞,內核異常之類的問題;

4、查看內存使用情況,未發現耗盡內存而占用交換分區swap的情況;

5、檢查應用程序php及nginx,nginx無異常,而php偶爾有慢日志輸出;

初步判斷,是php引起的負載異常。關閉php片刻,系統負載很快降到正常水平。懷疑被人惡意攻擊,通過查看tcp狀態,也無有價值的線索。

(三)檢查與應用緊關聯的文件服務器

論壇程序是以nfs的方式共享給多個應用服務器使用的,這樣的目的在於減少服務器之間的數據同步,假如不以共享的形式,則每個應用服務器都應保存一份完全相同的數據文件。因為一些數據文件隨時間推移會不斷發生變化,那么為了保證用戶訪問的一致性,就必須實時同步這些更新數據。

1、 檢查系統負載、內存使用情況,發現一切正常;

2、 檢查磁盤空間使用情況,未發現被塞滿的分區;

3、 檢查系統日志,未發現異常輸出;

4、 檢查nfs相關進程和配置,未發現異常;

以前發生過論壇訪問異常的情況,引起的原因就是共享文件系統(nfs)分區文件系統損壞,導致nfs客戶端(即php應用服務器)不能寫入緩存。為了確認這個猜測,在文件服務器及客戶端,都進行了創建和刪除文件測試,一切正常。

(四)檢查緩存服務器。

數據緩存使用的應用程序是memcached,這種服務器系統,僅僅運行這么一個應用,因為是內存存儲數據,因此一般情況下,懷疑有故障,只需重啟memcached,讓它再重新緩存就好。

1、 檢查系統負載、內存使用情況,一切正常;

2、 檢查系統日志,無異常;

3、 檢查網絡狀況,也很正常;

重啟memcached,對應用服務器的負載毫無幫助,看來問題也不在這里。

(五)檢查數據庫服務器。

僅僅剩下它了,問題很顯然,就與這個相關。吸一口帶霧霾的空氣,登錄主數據庫及從數據庫服務器系統,進行如下常規排查。

1、 檢查系統負載、內存使用情況,一切正常;

2、 檢查磁盤空間使用情況,未發現被塞滿的磁盤分區;

3、 檢查系統日志,未發現異常輸出;

4、 檢查網絡連接情況,主服務器連接數很少,而從服務器的連接數很多;這至少說明,在系統層面,主數據庫服務器的正常的,從服務器系統,在系統層面看來,也基本認為是正常的。

本集群使用的論壇程序discuz本身支持數據庫讀寫分離,因此主服務器的任務是承擔數據更新的任務,而查詢一類的工作,則由只讀狀態的從服務器(slave)承擔。我們先層主服務器的應用層面進行排查,步驟如下:

(1)、檢查mysql的錯誤日志及慢查詢日志,為發現異常輸出;

(2)、檢查mysql進程是否正常,執行mysql –p 登錄一下,能進入mysql客戶端命令行,守護進程正常;

(3)、mysql客戶端執行命令 show full processlist;輸出寥寥幾行,一切在可以接受的范圍;

由此判定,數據庫主服務器無異常。

現在,山窮水盡,水落石出,問題多半就是這個從數據庫服務器的問題了。系統層面的檢查,為發現有用的線索。查mysql錯誤日志,
未見異常;查mysql慢查詢日志,果然有輸出,而且還不斷有新的輸出。

一條sql語句好長啊,限於篇幅,不打算全副輸出截圖。登錄mysql客戶端,執行show full processlist; 天啦,好半天才輸出完畢,
線程數超過1000了(我設定的mysql最大連接數是1000),而輸出的內容,
大部分是慢查詢里邊的東東。用 mysql –p –e “show processlist;”>/root/sql_out 把這些sql形成一個文本文件,轉發給程序員。
他們看半天,也沒有得出一個結論。有人建議殺掉看是異常的sql語句,但殺掉后,還是不行。
大家還是懷疑被攻擊,通過dns處理,把請求先定向到360,起到一定的攻擊過濾作用。從監控見面看,確實有結果cc攻擊被攔截。
但對應用服務器的負載降低不起什么作用,並且論壇還是處於打不開的狀態。

以超級系統管理員的帳號登錄論壇后台,關閉論壇后,服務器負載立即恢復正常水平;再打開論壇,負載立馬飆升。邪門了啊,居然在技術層面查不出問題所在。折騰了一天,頭都大了。在qq群嚷了幾句:“誰改了程序沒有?誰在后台做什么設置沒有啊?…..”

有人冒出來一句:“刪垃圾貼的時候,為了快速刪除,設置了頁面顯示帖子的數量值”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM