网络排查案例课
杨胜辉
eBay 资深运维专家,流量系统负责人
22781 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 39 讲
实战三:不用抓包就能做的网络排查篇 (2讲)
网络排查案例课
15
15
1.0x
00:00/00:00
登录|注册

17 | 为什么前端页面里多选一个城市就报错?

寻找LB两侧报文对应关系的其他方法
HTTP 503和HTTP 500状态码的含义
tshark工具的使用
长期优化HTTP Response size
临时提升HAProxy的header size限制
计算抓包文件中的header size
查阅HAProxy源码
搜索HAProxy相关文档
分析502的语义
根据应用层uuid映射事务
利用Wireshark的 tcp contains 过滤器
分析HTTP返回码分布
使用tshark命令行工具
绕过云LB直接访问云主机Nginx或应用服务器
客户自查云数据库、云主机应用服务器
描述问题细节
重现问题
思考题
工具学习
解决方案
确认header size的限制
定位是HAProxy导致
映射客户侧与服务侧TCP连接
tshark统计发现大量502
排除法确定问题在LB
确认问题症状
HTTP状态码排查

该思维导图由 AI 生成,仅供参考

你好,我是胜辉。
第 15 讲中,我给你介绍了 Nginx 的 499 状态码的排查过程,这种排查方法其实也适用于其他 HTTP 状态码的排查。另外可能你也注意到了,这个案例是聚焦在后端 Web 日志方面的,那么如果遇到前端方面的报错,我们的排查又该如何开展呢?
所以今天这节课,我们就来探讨下这方面的排查技巧。跟往常一样,我们还是从案例说起。在这个过程中,你可以跟随我的脚步,通过抓包分析,把问题表象拆解为底层的数据流,然后深入到协议和应用的细节来找到根因。这样,以后你对类似的看起来凌乱没有头绪问题,也能有一套行之有效的方法来开展排查工作了。

案例:为什么前端页面里多选一个城市就报错?

我们曾经服务过一家垂直 OTA(Online Travel Agency,在线旅游),他们专注于欧洲旅行市场,取得了不俗的业绩。有一天,客户的运维负责人找到我们,报告了一个奇怪的问题。
他们最近推出了一个旅游产品,可以让用户自主选择在欧洲旅行的多个城市之间,以自定义的顺序展开旅行。比如,你可以选择从西班牙的巴塞罗那启程,然后来到法国巴黎,随后踏上风车王国荷兰的领土,最后把日不落帝国的伦敦作为最后一站来结束旅行。以上旅程是由 4 个国家(城市)组成的:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了前端页面多选城市报错的案例,并介绍了排查技巧。作者首先描述了在线旅游产品中的问题,即在选择多个城市时出现提交错误的情况。通过排查过程,展示了如何确认和重现问题,以及通过排除法筛选问题根因。文章还介绍了使用tshark命令进行抓包分析的过程,以及tshark工具相对于Wireshark的优势。读者可以从中了解到排查前端页面报错的技巧和工具,以及如何通过抓包分析来定位问题根源。此外,文章还探讨了HTTP 5xx系列状态码的含义,以及反向代理和负载均衡器在处理这些状态码时的作用。通过分析抓包文件,读者可以学习如何在客户端和服务端之间建立映射关系,以便更有效地定位问题。整体而言,本文提供了丰富的排查经验和技术方法,对于解决类似前端页面报错问题的读者具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《网络排查案例课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • 小白
    我们遇到header太大的问题,当初报的是400

    作者回复: 嗯很好的补充。其实你说的情况,跟课程里的情况正好相反: 1.课程里的案例是返回的方向,是HTTP响应的头部超限 2. 你的案例是请求的方向,是HTTP请求的头部超限。那么这种情况下,属于HTTP请求不合规,返回HTTP 400也是正确的做法。

    2022-03-03
    7
  • 潘政宇
    503服务不可用,一般限速的时候,出现。

    作者回复: 是的~

    2022-02-28
    4
  • Realm
    我们也遇到过http header过大,造成前端无法请求的问题,后来分析是迭代一个新功能,在http heder中插入一个较大的token导致。 像一般的lb、waf,都有http header最大值限制,排错的时候都是一个点. 1. 500 上游服务内部错误,如程序报错等; 2.503 上游服务资源不可用,有可能服务过载;

    作者回复: 是的,案例里的是我在ucloud公有云时候的事情。在ebay也有类似的发生过。

    2022-02-28
    2
    3
  • JianXu
    HA Proxy 的 log 中会打印相关的出错信息吗?而且我没有理解HA Proxy 把系统设计成header size 过大就改写返回码到502 的深层次原因,为什么要这么设计呢?

    作者回复: 我记得当时的报错信息里并没有明确指出"upstream回复的response里的header size超限”这个原因,也许是Haproxy可以改进的地方。其实envoy也有类似的不足,比如envoy回复4xx的的时候在日志也不会记录具体哪里不合规,只会笼统的说请求不合规。 至于为什么是报502,文中有提及:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/502 “它表示作为网关或代理的服务器,从上游服务器中接收到的响应是无效的。”

    2022-09-12归属地:上海
    1
  • 那时刻
    问题一: LB返回500,表示上游服务器错误,比如处理不合法字段导致了崩溃。 LB返回503,表示上游服务器没有实现该方法/服务。 问题二: 我们之前应用过aws LB的header里traceid来区分LB两侧的消息。消息经过LB之后,会在header里插入唯一traceid。

    作者回复: 就503来说,是后端(上游)服务器暂时不可用了(比如从LB连不到服务器)。“没有实现该方法”应该是501了:) 你说的aws LB的traceid,应该是LB到上游服务器的请求里带着,而进入LB的时候还没有吧?还是说客户端生成请求的时候就已经带了这个traceid?然后经过LB的时候在traceid后面附加了信息,或者是新增一个traceid头部?

    2022-02-28
    2
    1
  • Geek_93ebde
    这篇文章对日常运维很有帮助,学习了。

    作者回复: 你看重的是这篇文章中哪个关键点? 我猜,是不是把问题表像(选多一个城市就报错)推进到具体的技术细节(收到HTTP 502)的过程? 看到这表像,确实一开始是有点难以下手的。但熟练掌握了网络排查的技巧,你可能就有三板斧了,比如浏览器的开发者工具、tcpdump抓包、wireshark分析,这一通操作下来,扑朔迷离的表面现象,也可能被你逐步定位,最终水落石出。这个过程就像探案一样,是很有趣的!

    2022-12-02归属地:上海
  • 宝仔
    老师你好,问个问题,你这些案例中客户都是用http不用https的吗?一般线上都会用https,https的话在wirekshakr里是看不到请求报文的

    作者回复: 恩这几个案例确实是http的,明天上线的就是解密课了,其实能解密就依然能做这些分析了,只是前置任务多了一项:)

    2022-03-06
  • 追风筝的人
    500 : 后台服务器内部错误

    作者回复: 是的:)

    2022-03-01
  • 原则
    这个不太对吧,响应的 body 大小,为什么是请求 heaer 中的 content-length 呢?看了下抓包文件,这里是 chunk 传输,不能通过 content-length 获取的。
    2023-06-11归属地:广东
  • 原则
    老师这里抓包是不是做了修改,看不到课程中的 sk 信息
    2023-06-11归属地:广东
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部