回覆列表
  • 1 # 網路圈

    早些年的站長朋友們應該都聽說過DZ,到現在為止依舊有很多論壇系統是使用DZ開原始碼直接部署或二次開發的。DZ從使用者功能及體驗上來說是很不錯的,但並不代表它的技術實現方案就是最優的,最直觀的感受就是,資料量一大,論壇可能就會出現一些問題。

    DZ論壇是啥?

    DZ是Discuz!系統的簡稱,它是基於PHP+MySQL技術開發的一套通用的社群論壇系統,透過它可以快捷搭建出屬於自己的論壇。現在很多地方論壇其實都是用它這個系統的。

    DZ論壇操作出現502錯誤的原因

    上面說到了,DZ論壇雖應用廣泛,但在大資料量的情況下可能會出現一些問題,比如502超時現象。DZ出現502錯誤的原因有哪些?

    1、單表資料量過大導致的SQL查詢超時;

    2、PHP配置引數未調優,一旦PHP指令碼執行時間較長則出現超時;

    3、Nging或Apache這類Web容器的超時時間設定過短等。

    DZ出現502超時錯誤的解決方案

    1、PHP配置引數調優

    PHP指令碼執行是有時間限制的,指令碼執行時間一旦超過這個時間就會丟擲502錯誤,因此我們需要適當調高以下這些引數:

    PHP配置檔案(php.ini)中的 max_execution_time

    php-fpm配置檔案(php-fpm.conf)中的 request_terminate_timeout

    同時開啟php-fpm配置中的 request_slowlog_timeout ,此引數配置後可以將PHP執行慢的語句記錄下來。

    2、調整Nginx/Apache這類Web容器的超時時間充置

    像IIS/Nginx/Apache預設情況下是不支援PHP指令碼的,之所以感覺PHP是在它們中執行的其實是因為這類Web容器使用Fast-CGI等技術來處理PHP請求的。

    以Nginx為例,同樣也是有超時時間限制的,主要引數有:proxy_connect_timeout 、proxy_read_timeout 、proxy_send_timeout 。

    3、檢查MySQL中單表資料量是否過大

    MySQL預設的配置引數只是通用型的,一旦MySQL資料量過大我們則要適時調整MySQL的配置項,另外要做慢查詢分析,看看是哪些SQL執行速度慢,另外可以考慮做分表。

    4、建議使用NoSQL(Redis)來快取熱點資料

    對於論壇型應用,是典型的讀多寫少,我們可以用Redis來將熱門貼子資料快取下來,這樣就避免了來回查庫帶來的效能開銷,速度會變得很快。

  • 中秋節和大豐收的關聯?
  • 怎麼能更好的避免打瞌睡?