亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx出現502和504錯誤解決方法

發布時間:2020-08-11 03:44:13 來源:網絡 閱讀:2724 作者:闞小看 欄目:建站服務器


公司一臺測試服務器,最近出現504和502問題:(環境LNMP,php編譯安裝,Fastcgi模式),問題不難解決,但這里分享一下自己的排查思路和處理問題的方式。

504 Gateway Time-out,nginx 502 bad gateway


一、分析問題:

Nginx 504 Gateway Time-out的含義是沒有請求到可以執行的PHP-CGI。

Nginx 502 Bad Gateway的含義是請求的PHP-CGI已經執行,但是由于讀取資源的等沒有執行完畢而導致PHP-CGI進程終止。

二、排查步驟:

1)查看Nginx是否可以正常解析php文件(解析正常)

2)查看Nginx訪問日志和php日志(日志報錯,鎖定問題)

2.1.1)Nginx相關日志

1
2
 failed (104: Connection reset by peer) while reading...
 timed out (110: Connection timed out) while reading response...

2.1.2)php相關日志

1
WARNING:  child 25718 exited on signal 15 (SIGTERM) after 21008.883410 seconds from start

3)查看php和nginx相關配置(Fastcgi相關參數)

......

3.1.1)Nginx和Fastcgi常用相關參數:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
fastcgi_connect_timeout 60;
 
#指定連接到后端FastCGI 的超時時間。
 
fastcgi_send_timeout 60;
 
#向FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手后向FastCGI 傳送請求的超時時間。
 
fastcgi_read_timeout 300;
 
#接收FastCGI 應答的超時時間,這個值是指已經完成兩次握手后接收FastCGI 應答的超時時間。
 
fastcgi_buffer_size 4k;
 
#指定讀取FastCGI 應答第一部分需要用多大的緩沖區,一般第一部分應答不會超過1k,由于頁面大小為4k,所以這里設置為4k。
 
fastcgi_buffers 8 4k;
 
#指定本地需要用多少和多大的緩沖區來緩沖FastCGI 的應答。
 
fastcgi_busy_buffers_size 8k;
 
#默認值是fastcgi_buffers 的兩倍。
 
fastcgi_temp_file_write_size 8k;
 
#在寫入fastcgi_temp_path 時將用多大的數據塊,默認值是fastcgi_buffers 的兩倍。
 
fastcgi_cache TEST
 
#開啟FastCGI 緩存并且為其制定一個名稱。
 
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
 
#為指定的應答代碼指定緩存時間,如上例中將200,302 應答緩存一小時,301 應答緩存1 天,其他為1 分鐘。
 
fastcgi_cache_min_uses 1;
 
#緩存在fastcgi_cache_path 指令inactive 參數值時間內的最少使用次數,如上例,如果在5 分鐘內某文件1 次也沒有被使用,那么這個文件將被移除。

3.1.2)查看進程使用情況

1
netstat -autpn|grep "php-cgi"|wc -l

3.1.3)查看Nginx和Fastcgi相關配置

1
2
3
4
5
6
7
fastcgi_connect_timeout 60;
fastcgi_send_timeout 60;
fastcgi_read_timeout 60;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

調整時間,根據之前經驗300s足夠,最主要的設置是前三條:

1
2
3
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;

3.1.4)調php相關參數:

php.ini

1
max_execution_time = 60

php-fpm.conf:

1
2
request_terminate_timeout=300s
#默認是0

3.1.4.1)上述參數作用

兩項都是用來配置PHP腳本的最大執行時間的。當超過這個時間時,PHP-FPM不只會終止腳本的執行,還會終止執行腳本的Worker進程。因此Nginx發現與自己通信的連接斷掉了,就會返回給客戶端502錯誤。

3.1.4.2)參數具體配置方式:

  如果服務器性能足夠好,且寬帶資源足夠充足,PHP腳本沒有系循環或BUG的話你可以直接將”request_terminate_timeout”設置成0s。0s的含義是讓PHP-CGI一直執行下去而沒有時間限制。

  ”max_children”也需要根據服務器的性能進行設定,一般來說一臺服務器正常情況下每一個php-cgi所耗費的內存在20M左右,可根據自己的配置具體定義。


3.1.5)502和504可能存在的其它問題

3.1.5.1)Nginx的max_fail,fail_timeout問題

3.1.5.2)網絡偶然問題

3.1.5.3)參數配置沖突問題(eg:php.ini和php-fpm,Nginx配置Fastcgi指定了相關參數)

1
2
3
4
5
6
7
location ~ \.php$ {
                root                    htdocs;
                include                 fastcgi_params;
                fastcgi_connect_timeout         60;
                fastcgi_read_timeout            120;
                fastcgi_send_timeout            120;
}

三、總結:

4.1)根據Ninx相關報錯可直接根據常見報錯鎖定目標。

4.2)根據日志,快速鎖定原因。日志是排錯的法寶,一定要充分利用。

4.3)調參數注意文件的備份,避免誤操作。此外要考慮到參數生效優先級的問題。

4.4)問題總結,做好筆記,下次遇到則可快速解決


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南通市| 道孚县| 阳西县| 五台县| 甘南县| 荃湾区| 自贡市| 四平市| 隆回县| 玉田县| 进贤县| 合江县| 泾源县| 葵青区| 建平县| 开封县| 鱼台县| 克山县| 阳原县| 旅游| 泊头市| 汤阴县| 邹平县| 桐柏县| 龙川县| 建湖县| 灵寿县| 浠水县| 大同市| 宝兴县| 高唐县| 海原县| 齐齐哈尔市| 福州市| 华阴市| 句容市| 孟村| 桐柏县| 合作市| 金华市| 桂林市|