首頁  >  文章  >  後端開發  >  如何解決nginx php 499錯誤問題

如何解決nginx php 499錯誤問題

藏色散人
藏色散人原創
2021-04-02 09:03:484520瀏覽

nginx php 499錯誤是因為伺服器端處理的時間過長,客戶端斷開等待狀態,其解決方法就是在linux上找到“php-fpm.conf”,並在最下方增加“pm =dynamic」等配置即可。

如何解決nginx php 499錯誤問題

本文操作環境: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn