国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

業務前端界面報錯504排查思路和解決辦法

開發 前端
本文只是提供一個自己在排查過程的思路方向,每個問題的情況和背景不一樣,需要各自結合實際情況來調整。

1.背景

本文主要是寫的最近比較影響深刻的一次排查客戶訪問業務前端域名,報504,timeout錯誤問題的記錄,該客戶為私有化部署,給客戶部署的服務存在跨洲調用,沒有專線,澳洲調用歐洲的服務情況,可能存在網絡延遲比較大,需要排查504的具體原因,然后通過優化參數臨時解決。

2.排查步驟和思路

2.1 故障現象溝通

對于toB的客戶來說,通常在使用我們產品的時候,報錯只會反饋一個截圖,我們需要向客戶溝通或者關鍵的信息,有利于問題排查。

圖片

比如:

  • 打開的什么頁面,便于自己復現
  • 具體報錯的接口是哪個?
  • 大概的報錯時間
  • 如果有x-request-id,拿到請求id
  • 具體報錯的url

圖片

2.2 梳理整個訪問請求的鏈路

我們需要了解,瀏覽器上的請求鏈路,才能更好的去排查問題,比如我遇到的這個問題,請求鏈路是這樣的。

客戶機器訪問瀏覽器域名  -> 私有端域名cdn(1)  -> 私有端 SLB(2) -> 私有端 nginx(3)-> saas端服務域名cdn (4) -> saas端 SLB (5) -> saas 端nginx(6) -> saas端業務后端服務。

每個公司的業務情況不一樣,根據自己的實際情況梳理。

2.3 查看日志

  • 第一次問題排查

通過第一步故障現象的溝通,獲取的內容,然后去看鏈路上nginx(3),即私有端nginx的日志,想確認請求是否到達了服務器,根據 x-request-id搜索到日志,時間點和path也能對上,狀態碼是504,請求時間是30s,頁面多次刷新都是30s超時。

圖片

于是檢查nginx上的配置,發現該接口location里面的后端服務器響應時間,proxy_read_timeout時間設置為30s,相當于nginx會等待30s的時間來獲得請求的響應,如果在30s內如果響應接收不完,就會報出來504 timeout。

圖片

于是,修改了將進行proxy_read_timeout時間修改為了300s,然后reload一下nginx。

圖片

  • 第二次問題排查

客戶反饋訪問頁面依賴報錯504,timeout,于是繼續看nginx的日志,懷疑是不是沒生效,但是查看日志之后發現報錯狀態碼變了,是499,并且都是request_time為60s,其實就相當與客戶端的請求打到了Nginx上,Nginx把請求轉到后轉服務器A,由于nginx的proxy_connect_timeout 超時時間默認的60s,就會導致Nginx把客戶端的請求轉到服務器A的時候,就會嘗試連接60s,而客戶端的響應時間設的是30s,所以造成客戶端造成大量超時情況,Nginx報大量的499。

圖片

。然后經過查閱之后,發現需要增加參數proxy_ignore_client_abort修改為on,想看看真實情況,于是在報錯的location下增加了之后reload了nginx。

圖片

繼續觀察日志,發現日志又變了,是報504 180s。

圖片

此時開始懷疑是nginx之后的saas端nginx的的問題,然后根據 x-request-id搜索到日志,發現請求確實到了saas端,但是很明顯,日志打印出來的200,請求時長是60s。

圖片

于是根據上面的鏈路情況,懷疑到了saas端和私有端的saas端slb (5) 上,經過客戶核實,他們用的阿里云的slb,默認的最大連接請求超時時間為180s,基本上和私有端的nginx里面的日志大量出現180s超時能對應上。

圖片

于是提工單給阿里云客服,咨詢是否可以調大,結論是不可以,監聽器http和https協議的最大只能180s(其實人家是有道理的,這完全是由于我們私有端在澳洲,saas端在歐洲,跨洲訪問的結果),但是客服說可以采用tcp協議,能夠支持900s,于是新建了一個tcp協議的監聽器,連接超時時間也設置為350s(為了與nginx上的proxy_read_timeout區別開),然后把私有端的upstrem轉發的地址端口改成新的測試,客戶答復訪問正常。

  • 第三次問題排查

是我太天真了,以為完全解決了,但是第二天客戶反饋,隨機性還是會出現504超時,期間讓客戶用瀏覽器無痕模式打開,清理瀏覽器緩存,依舊偶爾出現,影響客戶體驗,因此有了第三次問題排查。

依舊先去查看私有端nginx的日志,無異常,狀態碼都是200,只是請求響應時間比較長超過60s了。

圖片

圖片

查看saas端的nginx日志也是正常的。

圖片

然后就不理解了,問題出在哪里,然后讓客戶如果再次出現,就把報錯接口的copy url出來,然后手動在服務器請求url,能夠復現出來504,并且是nginx給返回的。

圖片

于是在私有端一邊手動請求,一邊tcpdump抓包,發現也是正常的tcp三次握手連接,http正常請求返回,無異常。

圖片

圖片

但是在請求返回的數據上,發現了一個端倪,server并不是nginx,我們的nginx因為修改過名字,叫Sws,所以剛才請求的時候nginx 504 timeout,不是我們業務側返回的,然后就懷疑到了請求鏈路上私有端 SLB(2) 上,于是找客戶確認,訪問的域名雖然走了cdn加速,但是會回源到這個slb上,然后監聽器的連接超時時間設置的的確是60s,然后客戶修改成180s,之后兩天沒有出現過超時的問題了。

3.排查過程中的知識點

3.1 在nginx中 499狀態碼的定義和處理方法

  • 查看Nginx源碼

當客戶端主動關閉鏈接時,http狀態代碼中沒有可以表示該狀態的,但在nginx又需要記錄,所以自定義了一個499這個狀態來表示。

*
* HTTP does notdefine the code for the case when a client closed
* the connectionwhile we are processing its request so we introduce
* own code to logsuch situation when a client has closed the connection
* before we even tryto send the HTTP header to it
*
*/
#define NGX_HTTP_CLIENT_CLOSED_REQUEST 499

所以顯然,客戶端端主動關閉請求或者客戶端網絡斷掉時,于是nginx就記錄了499狀態,并且斷開了和后面服務端的連接(這樣可能導致服務端返回數據時,因為連接斷開而報錯)。

圖片

  • 解決499問題
  • 查看服務端為什么響應這么慢,是否需要優化,或者調大客戶端方的連接超時時間,不那么快斷開
  • proxy_ignore_client_abort參數調整。

這個參數表示忽略客戶端終止情況,默認為off關閉狀態,當客戶端網絡中斷請求時,nginx 服務器中斷其對后端服務器的請求,并立即記錄 499 日志。

設置為 on 開啟,則nginx會忽略客戶端中斷,并一直等著代理服務執行返回,記錄后端返回的請求的狀態。

location =/api { 
proxy_ignore_client_abort on;
proxy_pass http://service_backends;
}

這個參數的意思是:在客戶端主動關閉連接后, nginx 與分發服務器的連接是否保持連接。如果參數設置了on,則客戶端如果斷開連接,nginx也不會斷開與后端服務端的連接,nginx會等待后端處理完(或者超時),然后記錄「后端的返回信息」到日志。所以,如果后端返回 200,就記錄 200 ;如果后端放回 5XX ,那么就記錄 5XX 。如果超時(默認60s,可以用 proxy_read_timeout 設置),Nginx 會主動斷開連接,記錄 504。

注意:開啟后nginx只會在讀取超時時關閉連接,默認為60s,可能出現請求連接擠壓的情況,所以默認情況下是關閉。如果開啟必須設置好proxy_read_timeout超時時間,并且nginx最好別做反向代理以外的事情。

這個方案只是解決了兩個問題:(1)nginx上499的錯誤(2)服務端因為連接斷開報Broken pipe的錯誤。

所以最好的方法還是優化服務端。

3.2 nginx中的時間解釋

這個時間有沒有取決于nginx的日志格式log_format里是否配置

  • request_time:指的就是從接收用戶請求的第一個字節到發送完響應數據的時間,即$request_time 包括接收客戶端請求數據的時間、后端程序響應的時間、發送響應數據給客戶端的時間。(request processing time in seconds with a milliseconds resolution; time elapsed between the first bytes were read from the client and the log write after the last bytes were sent to the client 。)
  • up_resp_time/upstream_response_time:指nginx從后端獲取結果的處理時間,從nginx和后端建立連接開始,到關閉連接為止,連接的后端地址為upstream_addr值。(keeps times of responses obtained from upstream servers; times are kept in seconds with a milliseconds resolution. Several response times are separated by commas and colons like addresses in the $upstream_addr variable)。
  • up_addr/upstream_addr:后端服務地址。
  • request_time時間肯定是要比up_resp_time要大的。

3.3 nginx中proxy相關的參數解釋

proxy_connect_timeout :后端服務器連接的超時時間_發起握手等候響應超時時間(代理連接超時)默認60s

proxy_read_timeout:它決定了nginx會等待多長時間來獲得請求的響應(代理接收超時)默認值60s

proxy_send_timeout :后端服務器數據回傳時間_就是在規定時間之內后端服務器必須傳完所有的數據(代理發送超時)默認值60s

4.總結

  • 當前修改配置參數實際上屬于非標準操作,本文只是提供一個自己在排查過程的思路方向,每個問題的情況和背景不一樣,需要各自結合實際情況來調整。
  • 該問題主要還是跨洲訪問,沒有走專線,網絡這邊不穩定會導致在請求的時候出現超時問題,然后根據具體的問題現在通過調整配置來臨時解決這個問題,讓客戶能正常使用,客戶是上帝。
  • 不要畏懼問題,所有的問題總能找到原因,不能一味的歸結到是網絡的問題,重啟大法來解決,我們其實可以定位得更細,需要知其然知其所以然。
責任編輯:武曉燕 來源: 運維開發故事
相關推薦

2024-01-04 09:04:02

2024-11-29 16:35:33

解決死鎖Java線程

2015-01-23 09:20:32

2009-11-30 11:01:20

MySQL與PHP產生

2015-06-10 13:49:53

2009-06-03 16:41:21

Eclipse亂碼Eclipse

2011-03-04 13:07:47

Filezilla

2024-10-10 15:32:51

2011-06-17 11:10:51

Qt 中文 輸出

2009-12-07 18:38:16

WCF異常

2016-03-23 09:37:22

響應式網頁設計

2024-09-25 14:25:47

API接口

2024-12-05 08:00:00

緩存數據庫集群

2009-05-31 09:07:35

Oracle鎖定

2011-01-19 17:54:48

2015-07-17 07:46:09

支付類平臺保障

2023-10-08 13:10:00

Redis數據庫

2009-05-31 09:53:38

DB2故障處理錯誤碼

2023-10-19 21:50:51

業務痛點服務

2022-01-10 09:44:06

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

www国产精品内射老熟女| 欧美一个色资源| 日韩在线国产精品| 无码人妻丰满熟妇区五十路百度| 菠萝蜜一区二区| 欧美私模裸体表演在线观看| 麻豆视频传媒入口| 色偷偷综合网| 精品亚洲男同gayvideo网站| 国产无遮挡又黄又爽免费软件| 天天做天天爱天天综合网| 亚洲免费精彩视频| 亚洲精品套图| 久久老女人爱爱| 日本不卡在线播放| 欧美在线免费看视频| 在线看日韩欧美| 国产青青草在线| 国产精品国产a| 大地资源网在线观看免费官网 | 美女av一区| 欧美日韩日日摸| 区一区二日本| 96av麻豆蜜桃一区二区| 国产视色精品亚洲一区二区| 成功精品影院| 亚洲电影在线看| 黄色免费在线看| 一本大道久久精品懂色aⅴ| 缴情综合网五月天| 国产馆精品极品| 亚洲一区二区三区精品在线观看| 日韩在线欧美| 中文字幕日韩综合av| 欧美xo影院| 一二美女精品欧洲| 国产亚洲字幕| 亚洲国产欧美一区二区三区久久| 国产免费av在线| 在线视频你懂得一区| 日韩高清在线观看一区二区| 国产精品毛片久久久久久久久久99999999| 少妇精品导航| 久久久久这里只有精品| 99欧美精品| 亚洲日韩中文字幕| 日韩影片在线观看| 欧美激情在线有限公司| 国产成人一二片| 成人天堂噜噜噜| 男女精品网站| 自拍日韩亚洲一区在线| 国产欧美一区二区精品久导航 | 成人亚洲精品久久久久软件| 99久久er热在这里只有精品15| 欧美经典一区二区| 欧美日韩dvd| 国产成人在线影院| 国产bdsm| 精品偷拍各种wc美女嘘嘘| 欧美自拍视频| 超碰人人爱人人| 欧美羞羞免费网站| 视频免费一区二区| 杨幂一区欧美专区| 亚洲黄色尤物视频| 一级毛片免费观看| 17c精品麻豆一区二区免费| 人人做人人爽| 色综合天天综合网天天狠天天| 77777影视视频在线观看| 91精品国产综合久久精品图片| 在线午夜视频| 欧美精选午夜久久久乱码6080| 992tv在线影院| 国产亚洲短视频| 男女激情免费视频| 国产欧美精品一区二区色综合| 那种视频在线观看| 国产一区二区三区站长工具| 日韩精品在线观看视频| 亚洲淫成人影院| 国产精品99免视看9| 国产一区二区三区香蕉| 亚洲欧美国产va在线影院| 免费观看在线一区二区三区| 亚洲色成人www永久在线观看| 欧美性猛交xxxx| 伊甸园亚洲一区| 四虎精品一区二区永久在线观看| 日韩中文字幕国产精品| 久久草av在线| 超级碰碰不卡在线视频| 日韩成人在线资源| 亚洲精品久久久蜜桃| 日本a级在线| 欧美激情在线狂野欧美精品| 精品国产一区探花在线观看| 国产日韩欧美在线观看| 麻豆成人免费电影| 成人黄色一区二区| 国产精品久久久久一区二区三区 | 99tv成人影院| 国产精品福利av| www.天天射.com| 国产欧美精品一区| 亚洲精品一区二区三区蜜桃久 | www.国产精| 亚洲精品欧美综合四区| 欧美人与禽猛交乱配视频| 亚洲国产精彩中文乱码av在线播放| 久久日本片精品aaaaa国产| 久久全国免费视频| 久久九九99视频| 97精品国产| 国产盗摄一区二区| 国产福利精品一区| 日韩色淫视频| 小小水蜜桃在线观看| 涩涩涩999| 欧美极品xxx| 亚洲日本高清| 亚洲欧美电影在线观看| 欧美成在线观看| 欧美视频在线播放| 久久精品久久99精品久久| 成人高清免费在线播放| 免费影院在线观看一区| 精品国产伦一区二区三区观看方式 | 欧美一级大片视频| 午夜激情一区二区三区| 一本一道久久a久久精品蜜桃| 日本中文字幕在线看| 久久亚裔精品欧美| 久热精品视频在线观看一区| 国产精品欧美经典| k8久久久一区二区三区| 一二三区不卡| 欧美少妇另类| 久久精品ww人人做人人爽| 日韩一级二级三级| 欧美一级本道电影免费专区| 22288色视频在线观看| 日韩在线欧美在线| 中文字幕日韩一区二区| 欧美视频四区| 一二三在线视频社区| 天天干天天玩天天操| 久久网福利资源网站| 成人拍拍拍免费视频网站| 日韩av手机在线看| 欧美网站一区二区| 国产三级精品视频| 欧美视频第二页| 国产精品女主播| 欧美中文字幕视频在线观看| 色婷婷久久一区二区三区麻豆| 久久亚洲视频| 国产精品成久久久久| 欧美韩日精品| 91精品国产欧美一区二区18| 久久国产日韩| 婷婷国产在线| 韩国成人动漫| 国产在线精品一区二区三区》| 欧美一区二区精品在线| 国产成人丝袜美腿| 成人香蕉社区| 日本天堂影院在线视频| 亚洲一区二区三区欧美| 久久777国产线看观看精品| 亚洲综合视频网| 日韩精品免费专区| 成人爽a毛片免费啪啪红桃视频| 十九岁完整版在线观看好看云免费| 日本一区二区不卡高清更新| 色妞色视频一区二区三区四区| 亚洲六月丁香色婷婷综合久久 | 欧美日韩一区二区视频在线观看| 亚洲美女精品久久| 亚洲一区二区欧美日韩| 久久99国内精品| 精品视频网站| 综合久久2023| 中国动漫在线观看完整版免费| 亚洲在线不卡| 日本精品久久中文字幕佐佐木| 日韩欧美专区在线| 亚洲欧洲成人av每日更新| 久久久久久久高潮| 日韩精品成人| 1区2区3区在线视频| 奇米影视四色在线| 一区二区精品视频| 成人国产亚洲精品a区天堂华泰| 欧美日韩性在线观看| 日韩理论片在线| 久久97精品久久久久久久不卡| 影音先锋久久久| 蜜桃视频免费观看一区|