电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺析nginx 客戶端返回499的錯誤碼的問題

瀏覽:138日期:2023-03-13 15:37:26
目錄
  • 網絡架構和背景
  • 上游服務抓包
  • 負載均衡的問題?
  • 修改配置 Nginx的配置

我們服務器客戶端一直有返回錯誤碼499的日志,以前覺得比例不高,就沒有仔細查過,最近有領導問這個問題,為什么耗時只有0.0幾秒,為啥還499了?最近幾天就把這個問題跟蹤定位了一下,這里做個記錄

網絡架構和背景

我們服務架構和錯誤碼是上面這樣的,上游服務日志沒有記錄,無法確定kong到上游服務的連接和請求細節。

kong上的日志rsp_cost:0.041rsp_length:0rsp_status:499ups_rsp_cost:-ups_rsp_length:0ups_rsp_status:-
waf上的日志rsp_cost:1.045rsp_length:0rsp_status:499ups_rsp_cost:-ups_rsp_length:0ups_rsp_status:-

看日志,兩個負載均衡的現象一毛一樣,kong upstream到web服務上,不太確定是upstream 鏈接的問題或者是讀寫數據的問題,或者是kong自己的問題,根本就沒有反向代理到上游服務

上游服務抓包

打算在上游服務上抓一下包,看看請求是在kong上出問題了,根本沒到上游服務,還是說已經到了上游服務,上游服務出問題了。

83是kong的ip,82是上游服務的ip
可以看到,83首先發了fin包,表示要斷開連接,之后82也回復了fin的ack包,之后82還在發送數據包,過了大概0.18秒,82才給83發了fin ack包,表示可以斷開連接了。這時候由于83早就斷開了連接,在這個中間的包,83回復了RST,我們使用的是長鏈接,83斷開連接之后,新的連接已經復用這個TCP連接了,這時候83只能回復RST。大概過程就是這樣的。

kong為什么要斷開連接?
由于我們使用upstream是長鏈接,猜測了很多種可能

  • keepalive_requests 超過keepalive_requests個請求后就會關閉長鏈接
  • keepalive_time 超過keepalive_time時間后就會關閉長鏈接
  • keepalive_timeout 打開上游服務的超時時間,連接超過keepalive_timeout就認為上游服務已經不可用了,這個參數就直接排除了,抓包已經看到請求已經到了上游服務

最后都放棄了這個配置,覺得Nginx應該會處理完請求之后再受到keepalive_requests keepalive_time的限制關閉連接,不可能請求處理一半然后直接主動關閉連接,還有一個原因,我們的Nginx版本是1.13,也沒有這些配置可以修改。

負載均衡的問題?

最后懷疑是waf上的問題,waf上請求量太大,沒去waf機器上抓包,猜測waf抓包跟kong的結果是一樣的,然后向前推測waf為什么要斷開連接,猜測是不是客戶端斷開了連接,如果是客戶端斷開連接的話,所有的看到的日志現象就是通的。
為了驗證這個猜測,我們在測試環境模擬了一下客戶端主動斷開連接的操作。
我們先在的上游服務上模擬了一個耗時的請求,然后再沒有返回結果的時候主動斷開請求。

class TestController extends BaseController{    public function actionTest()    {sleep(3);return $this->response->success(array("test","geekbang","es"));    }}

然后我們在終端上使用curl請求接口,在三秒之內取消請求。
curl https://test.com/test/test/testctrl+C 取消請求
然后觀察waf的日志,以及kong的日志,跟生產出現的499錯誤碼表現是一樣的。
基本上確定是客戶端主動斷開連接引起的。

修改配置 Nginx的配置

看一下proxy_ignore_client_abort說明

Syntax:	proxy_ignore_client_abort on | off;Default:	proxy_ignore_client_abort off;Determines whether the connection with a proxied server should be closed when a client closes the connection without waiting for a response.

確定當客戶端在不等待響應的情況下關閉連接時,是否應該關閉與代理服務器的連接。
客戶端不等待響應關閉連接時,默認會關閉與代理服務器的連接,改為on就是代理服務器不關閉,直到代理服務器處理完請求。
在kong上修改配置
proxy_ignore_client_abort on
改了一臺機器,觀察了一天,確定了是因為這個配置,后面把兩臺機器都改了之后就沒有再出現499的錯誤碼。修改了這個配置之后,盡管錯誤碼消失了,但是無效的請求會增加上游服務的壓力,本來這個請求已經無意義被客戶端關閉了,然后上游服務也被關閉了。打開之后,上游服務不會被關閉,直到請求處理完畢,有利有弊,需要權衡和取舍。

到此這篇關于nginx 客戶端返回499的錯誤碼的文章就介紹到這了,更多相關nginx返回499錯誤碼內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: Nginx
主站蜘蛛池模板: 隔离变压器-伺服变压器--输入输出电抗器-深圳市德而沃电气有限公司 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 小型数控车床-数控车床厂家-双头数控车床 | 恒温油槽-恒温水槽-低温恒温槽厂家-宁波科麦仪器有限公司 | 智慧养老_居家养老_社区养老_杰佳通 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 活性氧化铝|无烟煤滤料|活性氧化铝厂家|锰砂滤料厂家-河南新泰净水材料有限公司 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 广州昊至泉水上乐园设备有限公司 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 圆窗水平仪|伊莉莎冈特elesa+ganter | 康明斯发电机,上柴柴油发电机,玉柴柴油发电机组_海南重康电力官网 | 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 精密光学实验平台-红外粉末压片机模具-天津博君 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 北钻固控设备|石油钻采设备-石油固控设备厂家 | 闪电优家-卫生间防水补漏_酒店漏水渗水维修_防水堵漏公司 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 领袖户外_深度旅游、摄影旅游、小团慢旅行、驴友网 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | RFID电子标签厂家-上海尼太普电子有限公司 | 体检车_移动CT车_CT检查车_CT车_深圳市艾克瑞电气有限公司移动CT体检车厂家-深圳市艾克瑞电气有限公司 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 深圳装修_店面装修设计_餐厅设计_装修全包价格-尚泰装饰设计 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 综合管廊模具_生态,阶梯护坡模具_检查井模具制造-致宏模具厂家 |