Discuz論壇後臺卡及502錯誤的解決思路

【51CTO獨家特稿】使用Discuz論壇的朋友們不知是否遇到過論壇後臺登陸非常慢的情況,本文介紹的分析思路和解決方案可能會對你有所啓發。

錯誤描述

同事反應說Discuz登錄論壇後臺非常慢,時不時出現502錯誤;好不容易登上論壇,根本無法在後臺操作。自己登錄後,在後臺也是無法操作,卡住不動了。

故障分析

登錄服務器,負載正常,但發現php-cgi竟然沒有一個在運行。按照以前的經驗,有以下幾點原因:

  1. MySQL慢查詢:登錄mysql服務器後,執行show full process後,並沒有發現查詢執行時間長的sql記錄,mysql錯誤日誌也沒有報錯。
  2. 重啓php-fpm:service php-fpm restart,再次登錄後臺的時候,操作還是卡,看來不是這個原因。
  3. 惡意***:通過分析web日誌,沒有發現惡意***的記錄。聯繫硬防客服,抓包分析了一會,沒有在數據包中發現惡意數據,不過倒是發現一個ip在3-4秒內訪問管理頁面,硬防上屏蔽該ip後,後臺還是無法訪問。
  4. PHP日誌分析:在php-fpm的日誌中,頻繁出現Nov 22 00:09:05.217416 [WARNING] fpm_request_check_timed_out(), line 158: child 23796, script '/data/www/bbs/admincp.php' (pool default) execution timed out (300.099551 sec), terminating 執行腳本文件超時300秒。我對php-fpm.conf 對執行超時限制在300秒,超過這個數字就結束該進程,所以肯定是有什麼東西,導致php卡住了。

瞭解此點之後,通過lsof -n | grep php-cgi | grep /data0/grep -v grep 查找php-cgi停在哪個文件或目錄,發現原來停在在discuz日誌的目錄。

php卡住了

解決思路

將php-cgi故障反應給了同事,經同事研究分析,共享存儲,有寫入緩慢的現象。如果取消日誌寫入,登錄後臺操作,正常,反之,一旦開啓,就會像起先那樣,後臺操作卡住了。所以可以判斷問題出在存儲的寫入緩慢。

檢測了存儲,整體寫入是正常的,檢測過程也顯示正常,所以懷疑跟文件系統有關。

臨時解決方法:將日誌目錄移到本地服務器,並做好軟連接,觀察日誌是否寫入正常。

徹底解決方法:換MooseFS代替NFS。過去的近一年時間,我們一直在逐步將論壇從NFS替換成MooseFS,跑下來非常穩定。可以在對論壇升級的時候執行這一步驟。

作者簡介:崔曉輝,網名coralzd,大衆網系統管理員,精通網站系統架構、Unix技術。gtalk:[email protected] 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章