早些年的站長朋友們應該都聽說過DZ,到現在為止依舊有很多論壇系統是使用DZ開原始碼直接部署或二次開發的。DZ從使用者功能及體驗上來說是很不錯的,但並不代表它的技術實現方案就是最優的,最直觀的感受就是,資料量一大,論壇可能就會出現一些問題。
DZ是Discuz!系統的簡稱,它是基於PHP+MySQL技術開發的一套通用的社群論壇系統,透過它可以快捷搭建出屬於自己的論壇。現在很多地方論壇其實都是用它這個系統的。
上面說到了,DZ論壇雖應用廣泛,但在大資料量的情況下可能會出現一些問題,比如502超時現象。DZ出現502錯誤的原因有哪些?
1、單表資料量過大導致的SQL查詢超時;
2、PHP配置引數未調優,一旦PHP指令碼執行時間較長則出現超時;
3、Nging或Apache這類Web容器的超時時間設定過短等。
1、PHP配置引數調優
PHP指令碼執行是有時間限制的,指令碼執行時間一旦超過這個時間就會丟擲502錯誤,因此我們需要適當調高以下這些引數:
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來將熱門貼子資料快取下來,這樣就避免了來回查庫帶來的效能開銷,速度會變得很快。
早些年的站長朋友們應該都聽說過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_timephp-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來將熱門貼子資料快取下來,這樣就避免了來回查庫帶來的效能開銷,速度會變得很快。