天天看點

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日志的目錄。

Discuz論壇背景卡及502錯誤的解決思路

解決思路

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

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