Apache-2.4
Apache 2.4 和 PHP-FPM 超時是由於我找不到的東西造成的
因此,我正在尋找使用 PHP-FPM 在我的 Apache 2.4 伺服器上不斷出現超時的原因。這是錯誤:
[proxy_fcgi:error] [pid ###] (70007)The timeout specified has expired:[client XXXXXXXX] AH01075 : Error dispatching request to:, referer: http://address
在以下配置文件中,我玩過我顯示的每個超時。我在 fpm 中有兩個池:
[www] ;user and group info and listening ip and such up here access_log = /path/to/access.log request_terminate_timeout = 15 php_admin_value[error_log] = /path/to/error.log php_admin_flag[log_errors] = on
第二個:
[app] ;user and group info and listening ip and such up here access_log = /path/to/access.log request_terminate_timeout = 300 php_admin_value[error_log] = /path/to/error.log php_admin_flag[log_errors] = on
和我的 php.ini:
max_execution_time = 300 max_input_time = 300 default_socket_timeout = 300
那麼我的Apache配置:
Timeout 80 <FilesMatch "^(some | names | of | files)\.php$"> SetHandler "proxy:fcgi://123.45.5.67:7891" </FilesMatch> <FilesMatch "^!(some | names | of | files)\.php$"> SetHandler "proxy:fcgi://123.45.5.67:5432" </FilesMatch>
顯然,httpd.conf 中還有很多內容,但沒有指定超時(不相關的 ProxyPass 設置為 300 秒除外)。我已經閱讀了這個文章:https ://unix.stackexchange.com/questions/270655/how-to-find-and-edit-apache-timeout ,但我已經檢查了我們的更新檔
rpm -q --changelog httpd | less
,並且有一個針對該錯誤的更新檔. 當我只有一個游泳池時,超時也更加混亂。從 24 秒到 6.7 分鐘不等(以 5Kb/s 的節流上傳速度;程式碼沒有問題,是有目的的測試)。有一段時間它似乎與 相關request_terminate_timeout
,但這種相關性消失了。謝謝你的幫助。
因此,事實證明它與油門速度有關。它是如此之低,以至於請求超時。我通過更改 RequestReadTimeout 解決了這個問題:
RequestReadTimeout header=20-120,MinRate=50 body=20,MinRate=50
請注意,如果來自使用者的流量在到達您的伺服器之前要通過代理或防火牆,這也很有幫助。請求和數據之間的時間可能很長。