1. 程式人生 > >網站突然報錯:502 Bad Gateway

網站突然報錯:502 Bad Gateway

今天網站突然報502 Bad Gateway錯誤,檢視頻寬使用正常,並沒有跑滿,重啟nginx服務沒有作用,檢視php-fpm.log,發現

[20-Mar-2017 11:11:13] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
看來是併發導致的,找到一篇文章:http://java-er.com/blog/nginx-php-fpm-speed/


根據文章大致提示:

/usr/local/php/etc/php-fpm.conf
pm.max_children = 1000

轉載一篇關於PHP-FPM配置檔案優化的文章,根據機器的配置設定引數,提高效能。

php-fpm.conf有兩個至關重要的引數:一個是”max_children”,另一個是”request_terminate_timeout”.

我的兩個設定的值一個是”40″,一個是”900″,但是這個值不是通用的,而是需要自己計算的。

計算的方式如下:

如 果你的伺服器效能足夠好,且寬頻資源足夠充足,PHP指令碼沒有系迴圈或BUG的話你可以直接將”request_terminate_timeout”設 置成0s。0s的含義是讓PHP-CGI一直執行下去而沒有時間限制。而如果你做不到這一點,也就是說你的PHP-CGI可能出現某個BUG,或者你的寬 帶不夠充足或者其他的原因導致你的PHP-CGI能夠假死那麼就建議你給”request_terminate_timeout”賦一個值,這個值可以根 據你伺服器的效能進行設定。一般來說效能越好你可以設定越高,20分鐘-30分鐘都可以。由於我的伺服器PHP指令碼需要長時間執行,有的可能會超過10分 鍾因此我設定了900秒,這樣不會導致PHP-CGI死掉而出現502 Bad gateway這個錯誤。

而”max_children” 這個值又是怎麼計算出來的呢?這個值原則上是越大越好,php-cgi的程序多了就會處理的很快,排隊的請求就會很少。設定”max_children” 也需要根據伺服器的效能進行設定,一般來說一臺伺服器正常情況下每一個php-cgi所耗費的記憶體在20M左右,因此我的”max_children”我 設定成40個,20M*40=800M也就是說在峰值的時候所有PHP-CGI所耗記憶體在800M以內,低於我的有效記憶體1Gb。而如果我 的”max_children”設定的較小,比如5-10個,那麼php-cgi就會“很累”,處理速度也很慢,等待的時間也較長。如果長時間沒有得到處 理的請求就會出現504 Gateway Time-out這個錯誤,而正在處理的很累的那幾個php-cgi如果遇到了問題就會出現502 Bad gateway這個錯誤。

max_requests即是說每個程序若超過這個數目(跟php程序有一點點關係,關 系不大),就自動殺死..我這裡應該設定512的,不過懶得壓力測試了,設定大一點,不過也不要設定過大,是個結構體,沒測試過,接近8K到9K大小.網 上動輒設定100k,有點浪費記憶體了.一個程序浪費大小接近1M.按照網上常用配置的128個程序,大概浪費100M左右.好吧,我承認100M是白菜 價,但也別這樣浪費..= =

max_children基本就是程序數,跟nginx的程序沒有想象中的那麼大,因為FPM會自己管理程序(有待考證,起碼我簡單瀏覽了一下原始碼,認為是這個意思).引數不宜設定過大,很佔記憶體,程序的消耗就不用我多說了.

max_children較好的設定方式根據req/s來設定,若程式是 100 req/s的處理能力..最大併發是10K,那麼就設定 100比較好,這是動態來調整的.

不過你若用php 5.3,也可以把style設定為apache-like,那麼設定start_servers,min_spare_servers,max_spare_servers三個引數就可以自動調整

很簡單,具體看配置檔案,這樣的設定之後,在高負載和複雜的php程式會省事一點,畢竟測試req/s是可惡的體力活.


相關推薦

網站突然:502 Bad Gateway

今天網站突然報502 Bad Gateway錯誤,檢視頻寬使用正常,並沒有跑滿,重啟nginx服務沒有作用,檢視php-fpm.log,發現 [20-Mar-2017 11:11:13] WARNING: [pool www] server reached pm.max_

LNMP安裝後子域名訪問工程502 Bad Gateway

sock index nmp php 但是 -c uri lnmp 問題 LNMP安裝好nginx、mysql、php後,放好代碼,搭建完數據庫,使用 IP/工程名 可以正常訪問,但是給這個工程配置了子域名,用子域名訪問就直接報錯 502 Bad Gateway 解決這

Harbor安裝502 Bad Gateway

https://www.opskb.com/ITHelp/672.html 檢視/var/log/harbor/adminserver.log 日誌有以下報錯 Dec 25 02:39:18 172.18.0.1 adminserver[2641]: 2017-12-25T07:39:18Z [

關於502 bad gateway的解決辦法

-a height col eight sys alt san microsoft gate 關於502 bad gateway報錯的解決辦法

LNMP環境出現502 Bad Gateway

config wget def tar.gz ons curl eve -m exif 環境: centos 6.9php-5.2.14nginx 1.15 故障現象: 配置好LNMP環境後,phpinfo能夠正常打開 1.web訪問HTTPS異常站點頁面訪問正常,但是跳轉

網站502 Bad Gateway

今天重啟之後nginx報502 bad gateway 重啟nginx後還是報錯,查詢日誌無資訊,重啟php-fpm 錯誤顯示pm.min_spare_servers、pm.max_spare_ser

http 網頁突然502 bad gateway,平臺宕掉

含義:連線超時 我們向伺服器器傳送請求。由於伺服器當前連結太多,導致伺服器方面無法給於正常的響應,產生此類報錯。 可能原因 以php為例 1、 php 程序數不夠 (max_children最大子程序數) 最長執行時間(request_terminate_timeout) 2、 ngin

網頁突然502 bad gateway,平臺宕掉

過程        今天使用者反饋平臺點什麼都是系統錯誤,初步看,就是所有的請求都返回的是502 Bad GateWay。腦子裡面第一反應就是nginx掛了,然後看伺服器上nginx程序,發現執行正常,去看nginx日誌也沒有發現任何問題        馬上網上搜了下,對50

php laravel專案啟動502 Bad Gateway錯誤

之前執行的好好的laravel專案突然不能啟動.... 環境排查: 1.nginx 檢視nginx伺服器是否啟動,命令列輸入以下命令 ps aux|grep nginx 或者直接在瀏覽器裡輸入127.0.0.1,如果得到下圖 說明nginx是開啟狀態,如果不是,請重啟nginx伺服器,命令列輸入以

nginx訪問php檔案,502 bad gateway解決方法

問題描述: nginx下,訪問php檔案,報502錯誤。 解決方案: 1. 檢查nginx是否配置了php的代理,具體如下: (1)開啟nginx.conf,檢查是否有如下配置: (

ubuntu nginx php-fpm 502 bad gateway 錯誤

上週六遊戲進不去,自己用工具測試時,提示 502 bad gateway 錯誤,一時不知道怎麼整,竟然把伺服器重啟了,等老闆的驗證碼,折騰了大半天,其實不用這樣,直接生啟php5-fpm,與nginx 就可以 /etc/init.d/php5-fpm restart ser

Android studio 代碼突然解決方案

cache dst roi image 技術分享 users 方案 file sdn 1.點擊File->Invalidate Caches / Restart... 2.重啟Gradle,清除緩存 3.Clean Project 4.關閉Android Stud

502 Bad Gateway

ati res 訪問 上網 item tar rec web服務器 阻止 502 Bad Gateway The proxy server received an invalid response from an upstream server. Sorry for the

莫斯科保衛戰之PHP-502 Bad Gateway

莫斯科保衛戰之openstack前言其實這個小報錯是之前的小故障但是也可以引發血案,所以我采取了修改php-fpm.conf 配置 nginx.conf的配置也相應設置好了所以今天介紹一下php的報錯。因上大學閑暇的時候喜歡軍事研究、所以本節故障為名莫斯科保衛戰!報錯如下:php-fpm5.4內容詳解現在都用

服務器老是出現502 Bad Gateway?

upstream 應用服務器 -a ber 出現 data- span 代碼 更多 給你的upstream增加keepalive配置沒有? upstream backend { server http://127.0.0.1:8888; keepa

Ueditor在上傳圖片時,服務器返回502 bad gateway的填坑記

ueditor 502 iconv故事發生在2017.10.26下午,環宇同學跟我反應說在測試青羊雙創項目的後臺管理,發現在編輯園區信息時,想要上傳一堆圖片,用編輯器嘗試上傳圖片時,卻報了“上傳失敗,請重試”的錯,類似下圖:納尼?我...... 多麽正常的編輯器,我本地跑的好好的,我趕緊去試了一下,果然報錯,

Nginx 顯示502 Bad Gateway錯誤

二維碼 div 名稱 ear 配置 star 成功 art edi 今天系統發布到測試環境,有一個用戶登錄後顯示502 Bad Gateway錯誤,其他的用戶都登錄成功。但是在開發機鏈接測試數據庫,使用該賬號登錄成功。 初步猜測是Nginx的問題,查看nginx的錯誤

502 Bad Gateway and 504 Gateway Time-out

502 504 502 Bad Gateway:作為網關或者代理工作的服務器嘗試執行請求時,從上遊服務器接收到無效的響應。主要為nginx和上遊服務器協議不同,沒法解析或響應504 Gateway Time-out:作為網關或者代理工作的服務器嘗試執行請求時,未能及時從上遊服務器(URI標識出的服務器

git cherry-pick fatal: bad object

fatal 參考 博客 目前 想要 error commit 關註 logs   場景:程序員A提交了一個commit到gerrit上,我們叫他為commit_id1,但是還沒有review,那就是沒有入庫,程序員B想再本地拿到這個commitd_id1,既然這個提交沒有入

Nginx 502 Bad Gateway 錯誤的原因及解決方法

nginx 錯誤 connect() to unix:/var/run/php5-fpm.sock failed Nginx 502 Bad Gateway 的錯誤已經遇到好幾次了,今天處理以下,在這裡記錄下解決方法: 首先查詢nginx的錯誤日誌檔案, 目錄為/var/log/nginx/