在Linux上,PHP-FPM連接超時問題可能是由于多種原因導致的。以下是一些建議和解決方案:
編輯PHP-FPM配置文件(通常位于/etc/php-fpm.d/www.conf或/etc/php/版本號/fpm/pool.d/www.conf),找到以下參數并進行調整:
request_terminate_timeout:設置請求超時時間,單位為秒。例如,將其設置為0表示無超時限制。默認值通常為0。pm.process_idle_timeout:設置進程空閑超時時間,單位為秒。如果一個進程空閑時間超過這個值,它將被終止。默認值通常為10s。增加此值可以防止進程過早被終止。例如:
request_terminate_timeout = 0
pm.process_idle_timeout = 30s
保存更改后,重啟PHP-FPM服務:
sudo systemctl restart php-fpm
如果你使用的是Nginx作為Web服務器,請檢查Nginx配置文件(通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/域名),找到以下參數并進行調整:
proxy_connect_timeout:設置與PHP-FPM服務器建立連接的超時時間,單位為秒。默認值通常為75s。增加此值可以防止連接過早超時。proxy_send_timeout:設置向PHP-FPM服務器發送請求的超時時間,單位為秒。默認值通常為75s。增加此值可以防止發送請求過早超時。proxy_read_timeout:設置從PHP-FPM服務器讀取響應的超時時間,單位為秒。默認值通常為75s。增加此值可以防止讀取響應過早超時。例如:
proxy_connect_timeout = 120
proxy_send_timeout = 120
proxy_read_timeout = 120
保存更改后,重啟Nginx服務:
sudo systemctl restart nginx
確保防火墻允許PHP-FPM和Web服務器之間的通信。如果你使用的是iptables,可以使用以下命令打開相應的端口(例如,9000端口):
sudo iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
如果你使用的是ufw,可以使用以下命令:
sudo ufw allow 9000/tcp
檢查你的PHP代碼中是否存在長時間運行的操作,例如復雜的計算、大量的數據庫查詢等。優化這些操作以減少執行時間。
查看PHP-FPM和Web服務器的日志文件,以獲取有關超時問題的更多詳細信息。這可以幫助你確定問題的根源并采取相應的解決措施。
希望以上建議能幫助你解決Linux上PHP-FPM連接超時的問題。