Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
背景
前一段时光,我忽然接到运营的同事传递,沪江的一位师长教师在国外登录不上了沪江帐号。这本来是很通俗的故障,然则在排盘考题过程并不简单,我们不测获得了不少收成,在这里与大年夜家分享。
我们起首断定,大年夜故障现象来看,应当和后端无关,而是与前端有关,所以我们敏捷查看了前端的日记,大年夜日记来看,主如果用于断定客户端的地舆地位接口持续出现缺点,出现大年夜量的HTTP Status Code 406(24小时之内出现了1w多条)。按照HTTP Status Code的规范,4开首的缺点码和客户端有关,推敲到这个故障只涌如今一位师长教师那边,初步断定406就是问题的根源。
跟着控制信息的增长,分析的加深,我们敏捷解决了那位外教的故障,不幸的是,确认它和406没有关系。
然则,我们并不克不及就此打住。毕竟正常情况下响应的HTTP Status Code应当是200,那么大年夜量的406到底是什么呢?为什愦我们都无法复现?它们是若何激发的?如斯大年夜量的爆发应当引起用户的反馈了?为什么线上的反馈这么沉着呢?
下图为日记平台中406缺点的情况
排查过程
为了保障机能,我们的 Node 端并没有具体记录每个请求,所以纯真看406的日记并不克不及知道具体的原因。为了排查这个问题,我们紧急宣布了在线补丁,具体记录每个请求的具体信息,然后在日记平台中看到了下面的请求
为了便于比较,我们在浏览器上朝长进步了正常的请求。如下图
细心比较这两个请求,结合缺点码406的定义,我们的眼光集中到了 Accept 这个header
日记中
而正常浏览器的行动
于是,我们在 Postman 中模仿了缺点的请求,不雅然,我们复现了406缺点,所以可以确认问题是 Accept 字段导致。
406 Not Acceptable 状况码表示客户端缺点,表示请求的资本的内容特点无法知足请求头中的前提,因而无法生成响应实体。 译自HTTP协定规范RFC文档
我们上彀查阅材料并也跟后端同事评论辩论了406的缺点码,得知,如不雅请求头的 Accept 不相符事先商定的契约,就会返回406缺点。报错的是 API 办事,返回的是 application/json 格局的数据, 然而请求中的 Accept 解释它并不支撑这种格局,所以会报出406缺点。
我们细心检查了常见浏览器发送的请求,发明全部都包含 Accept: */* ;。看来,这些激发406的请求并不是通俗用户发出来的。那么,毕竟是谁发出了这些请求呢?
难道是CDN?
CDN 的全称是Content Delivery Network,即内容分发收集。 其目标是应用户可就近取得所需内容,解决Internet收集拥挤的状况,进步用户拜访网站的响应速度。 CDN 收集可以将办事器的内容缓存到分布全球的CDN节点,根据用户的拜访 IP,就近连接 CDN,进步网站响应速度。(引用自google.com)
如今CDN已经是各类公司的广泛设备,沪江也不例外。我们细心研究了激发406的请求来源IP,发明都是来自北京联通的少数节点。如许看来,CDN的嫌疑很大年夜,大年夜概有两种可能:1、原始请求头部的Accept 字段就是错的;2、原始请求头部的 Accept 字段是对的,然则在经由 CDN 节点的时刻被 CDN 修改了。因为以前碰到过 CDN 修改头晨的问题,我们初步断定是 CDN 的问题。
接下来,我们将北京联通的节点临时回源,验证是不是 CDN 修改了头部,同时也拿到了最终的用户 IP。 上彀搜刮这个IP具体的信息,膳绫擎赫然写着某搜刮引擎的爬虫。本来,406并不是来自于通俗用户,而是搜刮引擎的爬虫。
花絮
在写文┞仿的┞封几天,发明缺点日记降低了很多,406缺点都没有了。认为某某搜刮引擎幡然悔过,于是用当时掉足的 IP 去日记平台搜刮,发明该搜刮引擎只是换了个策略。它的 Accept 字段做了修改,UA 头中加上了该搜刮引擎特有的标识,摇身一变又成了正规的搜刮引擎。
通配符 * 代表随便率性类型
小结
对开辟人员来说,当站点碰到大年夜量的406缺点的时刻,不消太担心,好好查下日记,它很有可能是搜刮引擎的爬虫导致的。
总结下本次406缺点码事宜,某搜刮引擎在爬取沪江页面的时刻,请求头设置 Accept 与后端办事所接收的 Accept 字段不合,大年夜而导致大年夜量的406缺点。
最后具体讲解下Header中 Accept 的相干常识
Accept
header顶用它来告诉客户端可以处理的内容类型,这种内容类型用MIME类型来表示(引用自MDN)
内容类型
text/html,application/xhtml+xml,application/xml 都是 MIME 类型,也可以称为媒体类型和内容类型。
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 时序数据库技巧体系一一个异常重要的技巧点是时序数据模型设计,不合的时序体系有不合的设计模式,不合的>>>详细阅读
本文标题:故障排查 从错误码406说起
地址:http://www.17bianji.com/lsqh/39031.html
1/2 1