激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - 服務器出現504 Gateway Time-out的解決方法!

服務器出現504 Gateway Time-out的解決方法!

2019-08-30 11:53服務器之家 服務器知識

對于一個Web開發者來說, 504 和502問題看上去好像很簡單,每個人也可能都遇到過,但把問題說清楚并不那么容易,騰佑科技小編也希望這篇文章能夠幫助您。 兩臺設備只要通過proxy或fastcgi協議互相通信,都會遇到504問題,比如

對于一個Web開發者來說,504和502問題看上去好像很簡單,每個人也可能都遇到過,但把問題說清楚并不那么容易,騰佑科技小編也希望這篇文章能夠幫助您。

兩臺設備只要通過proxy或fastcgi協議互相通信,都會遇到504問題,比如Nginx+PHP-FPM會遇到;代理服務器連接后端Web服務也會遇到。我本次遇到的場景屬于后者,重點講解代理導致的504問題。

服務器出現504 Gateway Time-out的解決方法!

那到底上面是504錯誤呢,看下wiki的引用:

4 Gateway Timeout

The server was acting as a gateway or proxy and did not receive a timely response from the upstream server

它的意思就是一個網關或代理服務器能夠連接后端服務器,但在讀取服務器響應的時候超時了。遇到504問題一般是后端服務的問題,比如:

后端進程無故退出了(可能是代碼異常,也可能是apache或nginx進程異常),導致代理服務器接收不到后端響應。

后端響應緩慢,導致代理服務器接收后端響應超時了。

服務器出現504 Gateway Time-out的解決方法!

按照上述可能的兩個情況,逐一分析。

(1)x.php程序在特定的情況下,確實運行緩慢,但apache的access log在25秒左右的時候成功記錄了200訪問日志(由于php代碼執行結束后才記錄日志,一開始可能看不到access日志,導致開始誤認為是后端程序的問題)。

(2)在x.php程序中記錄應用日志,應用日志和access log日志一樣,沒有任何異常。

這說明代碼并沒有問題(但程序執行時間過長,有優化的空間),雖然在20秒產生504錯誤(由nginx處理),后端代碼進程仍然繼續運行,并在25秒成功運行。

排除這個問題后,最有可能是代理服務器覺得后端響應過于緩慢,主動關閉了該連接,是不是代理服務器設置的超時時間過短?由于公司的代理服務器(ssl nginx)是由專人維護的,看不到具體的配置,郵件詢問了同事,得到回復如下:

proxy_read_timeout 60

proxy_send_timeout 60

首先看下 proxy_read_timeout 的官方介紹:

Defines a timeout for reading a response from the proxied server. The timeout is set only between two successive read operations, not for the transmission of the whole response. If the proxied server does not transmit anything within this time, the connection is closed.

最后將該值修改為:

proxy_read_timeout 300

proxy_send_timeout 300

問題最終解決了,肯定是proxy讀取超時了,但具體的配置仍然疑惑。

進一步測試

感興趣的同學也可以進一步了解nginx的proxy配置,如果沒有特殊的需求,配置非常簡單。

server {

listen 443 ssl;

server_name www.simplehttps.com;

location / {

access_log access.log main;

error_log error.log;

proxy_pass http://127.0.0.1:8080;

proxy_read_timeout 5;

}

}

proxy_pass 可以是一個host、內部域名、ip地址,不用是一個對外的域名。

如果遇到超時問題,觀察error.log日志,會看到以下錯誤:

2018/09/19 21:01:19 [error] 17034#0: *253 upstream timed out (110: Connection timed out) while reading response header from upstream, client: *.*.*.*, server: www.simplehttps.com, request: "GET /x.php HTTP/1.1", upstream: "http://*.*.*.*:8080/x.php", host: "www.simplehttps.com"

最后經過不斷調整nginx的proxy_read_timeout指令和后端x.php程序的執行時間,也沒有遇到工作中遇到的問題(20秒和60秒之間不對稱的問題),只能后續繼續留意了。

騰佑小編總結

1:網關和后端的超時時間(proxy或fastcgi)必須協調一致,在本案例中,apache/mod_php運行最長時間如果是30秒,那么nginx設置的超時時間必須大于30秒,因為必須考慮網絡傳輸延時時間(非網絡包總傳輸時間);而如果是nginx+php-fpm模式,nginx設置的超時時間相對簡單,因為大部分情況下,nginx和php-fpm部署在同一臺機器上,網絡延時相對較短,但必須考慮php最大執行時間和php-fpm最大執行時間,

2:針對5**錯誤,可認為都是http錯誤碼,都是服務器端的錯誤(相對于客戶端),在遇到相關錯誤的時候,我們必須根據錯誤碼判斷可能存在的問題,然后再針對性的排查,否則排查時間會增加很多。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲一区在线国产 | 一区二区三区日韩电影 | 男男啪羞羞视频网站 | 久久久久久久久国产 | 亚洲情在线 | 久久久久亚洲精品 | 久久羞羞 | 久久久久国产一区二区三区不卡 | 免费在线观看一级片 | 黄a大片 | 国产精品久久久久久久久粉嫩 | 国产精品久久久久影院老司 | 精品久久久久久久久亚洲 | 91九色视频观看 | 91午夜免费视频 | 成人在线视频精品 | 男女生羞羞视频网站在线观看 | 蜜桃一本色道久久综合亚洲精品冫 | 国产精品久久久久久久久久久天堂 | 成人毛片网站 | 国产精品视频在线观看免费 | 亚洲日韩精品欧美一区二区 | 在线成人免费观看视频 | 娇喘视频在线观看 | 欧美一区二区三区中文字幕 | 午夜精品久久久久久久96蜜桃 | 国产91一区 | 中文亚洲视频 | 日韩一级片毛片 | 黄色的视频免费观看 | 亚洲码无人客一区二区三区 | 性欧美视频在线观看 | 精品三级内地国产在线观看 | 久久福利国产 | 一级做a爱片性色毛片高清 日本一区二区在线看 | 久久精品亚洲一区二区 | 久久亚洲美女视频 | 欧美在线观看视频一区 | 色女人在线 | 久久久久国产成人精品亚洲午夜 | 久久大陆 |