nginx php 499錯誤是因為伺服器端處理的時間過長,客戶端斷開等待狀態,其解決方法就是在linux上找到“php-fpm.conf”,並在最下方增加“pm =dynamic」等配置即可。
本文操作環境:nginx1.0.4系統、PHP7.1版,DELL G3電腦
PHP與NGINX 499、502問題處理
nginx出現502有很多原因,但大部分原因可以歸結為資源數量不夠用,
也就是說後端php-fpm處理有問題,nginx將正確的客戶端請求發給了後端的php-fpm進程,
但是因為php-fpm進程的問題導致無法正確解析php程式碼,最後回傳給了客戶端502錯誤。
伺服器出現502的原因是連接超時我們向伺服器發送請求由於伺服器當前連結太多,導致伺服器方面無法給於正常的回應,產生此類報錯
因此如果您伺服器並發量非常大,那隻能先增加機器,然後按以下方式優化會取得更好效果;但如果你並發不大卻出現502,一般都可以歸結為配置問題,腳本超時問題。
最終的問題還是程式碼本身,處理時間過長、資源無法回執!所以注意程式碼優化!
499對應的是 “client has closed connection”。這很有可能是因為伺服器端處理的時間太長,所以客戶端就斷開等待狀態了。
如果兩次提交post過快就會出現499的情況,nginx認為是不安全的連接,主動拒絕了客戶端的連接!
還有就是超時!
大多說都是修改proxy_ignore_client_abort on,表示代理服務端不要主要主動關閉客戶端連線這是一種情況。但是並非解決問題的方法!
以下是我透過fpm來解決這個問題
控制子進程,選項有static和dynamic。如果選擇static,則由pm.max_children指定固定的子程序數。對於專用伺服器,pm值可以設定為static。如果選擇dynamic,則由一系列參數控制 即動態進程。
在linux上我們找到php-fpm.conf在最下方增加以下配置
pm = dynamic 動態路由選項配置
pm.max_children = 16 子程序最大數
pm.start_servers = 4 啟動時的進程數
pm.min_spare_servers = 2 空閒進程數最小值,如果空閒進程小於此值,則建立新子程序
pm.max_spare_servers = 16 保證空閒進程數最大值,如果空閒進程大於此值,此進行清理
關於靜態配置就不過多詳述默認配置即可,想詳細了解的請自行百度控制php-fpm的進程數
推薦學習:《PHP影片教學》
以上是如何解決nginx php 499錯誤問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!