我遇到了長時間運行的 PHP 腳本的問題:<?phpsleep(70); # extend 60sphpinfo();每次 60 秒后都會收到504 Gateway Time-out來自 Nginx 的響應而終止。當我檢查 Nginx 錯誤時,我可以看到請求超時:... [error] 1312#1312: *2023 upstream timed out (110: Connection timed out) while reading response header from upstream, ... , upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock", ...我瀏覽了相關問題并嘗試增加超時創建/etc/nginx/conf.d/timeout.conf具有以下內容的文件:proxy_connect_timeout 600;proxy_send_timeout 600;proxy_read_timeout 600;send_timeout 600;fastcgi_read_timeout 600;fastcgi_send_timeout 600;fastcgi_connect_timeout 600;我還閱讀了有關fastcgi和核心模塊的 Nginx 文檔,搜索默認設置為 60 秒的任何配置。我排除了client_*超時,因為它們返回HTTP 408而不是HTTP 504響應。這是我的 FastCGI 的 Nginx 服務器配置部分:location ~ \.php$ { fastcgi_pass unix:/run/php/php7.0-fpm.sock; include fastcgi_params;}從我目前閱讀的內容來看,這似乎不是 PHP 的問題,而 Nginx 應該歸咎于超時。盡管如此,我也嘗試修改 PHP 中的限制:我的價值觀來自phpinfo():default_socket_timeout=600max_execution_time=300max_input_time=-1memory_limit=512Mphp-fpm 池配置還啟用了以下功能:catch_workers_output = yesrequest_terminate_timeout = 600php-fpm 日志中沒有任何內容。我也是使用亞馬遜的負載均衡器來路由到服務器,但是超時配置也從默認的 60 秒增加了。我不知道還能去哪里看,在所有更改期間我都重新啟動了 php-fpm 和 nginx。
1 回答

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
正如在這些情況下發生的那樣,我實際上正在編輯一個錯誤的配置文件,該文件沒有被 Nginx 加載。
將以下內容添加到正確的文件中就可以了:
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
fastcgi_connect_timeout 600;
- 1 回答
- 0 關注
- 123 瀏覽
添加回答
舉報
0/150
提交
取消