




已阅读5页,还剩65页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
出了问题不要靠猜 LI Daobing 七牛云存储 2013 09 14 Saturday September 14 13 李道兵 Debian Developer 2004 年开始接触 Debian qterm ibus scim 等软件包得维护人员 开源爱好者 中文维基百科前管理员 参与维护 iso codes translationproject org python lunardate capistrano scm jenkins 作者 manpages zh douban ruby iptux 现任维护人员 我对开源的看法 参与一个项目 贡献我的时间是因为认同他的理念 而不是想改造他的理念 Github Saturday September 14 13 目录 从一个 Bug 讲起 我看到的乱象 我推荐的解决方案 Saturday September 14 13 一个奇怪的 Bug 网盘的上传服务 Windows 下 IE Chrome 浏览器下正常 Linux 下 Firefox Chrome 浏览器下正常 Windows 下的 Firefox 不正常 上传失 败 Saturday September 14 13 如何定位Bug Saturday September 14 13 如何定位Bug 首先查看浏览器的控制台 观察是否有错误 都没有 Saturday September 14 13 如何定位Bug 首先查看浏览器的控制台 观察是否有错误 都没有 用 Wireshark 截获请求包 发现失败的案例服务端返 回412 通常为200 Saturday September 14 13 如何定位Bug 首先查看浏览器的控制台 观察是否有错误 都没有 用 Wireshark 截获请求包 发现失败的案例服务端返 回412 通常为200 对比 HTTP Request 发现失败案例的 HTTP 头有 Content length 而其他情况下为 Content Length Saturday September 14 13 如何定位Bug 首先查看浏览器的控制台 观察是否有错误 都没有 用 Wireshark 截获请求包 发现失败的案例服务端返 回412 通常为200 对比 HTTP Request 发现失败案例的 HTTP 头有 Content length 而其他情况下为 Content Length 用 telnet 发送不同的请求来验证结论 Saturday September 14 13 如何定位Bug Saturday September 14 13 如何定位Bug 确认原因是服务端对 Content Length 的 大小写敏感 与标准不符 造成了这个 Bug Saturday September 14 13 如何定位Bug 确认原因是服务端对 Content Length 的 大小写敏感 与标准不符 造成了这个 Bug 通知服务端开发人员尽快修复 Saturday September 14 13 好Bug 坏Bug Saturday September 14 13 好Bug 坏Bug 能再现的 Bug 就是好 Bug Saturday September 14 13 好Bug 坏Bug 能再现的 Bug 就是好 Bug 如果不能再现 能拿到异常栈或者详细 日志的也是好Bug Saturday September 14 13 好Bug 坏Bug 能再现的 Bug 就是好 Bug 如果不能再现 能拿到异常栈或者详细 日志的也是好Bug 对于坏 Bug 他的最大用处就是督促你补 充日志 Saturday September 14 13 另一个奇怪的Bug 从公司访问网站有12s延迟 直接 ping 响应很快 从其他网络来源访问没有问题 监控没有问题 也没有客户来抱怨此事 Saturday September 14 13 先猜猜看 Saturday September 14 13 先猜猜看 公司路由出问题了 重启一下路由试试看 但为什么只有访问我们自己网站会出事 Saturday September 14 13 先猜猜看 公司路由出问题了 重启一下路由试试看 但为什么只有访问我们自己网站会出事 人品问题 做程序员还是唯物一点比较好 Saturday September 14 13 先猜猜看 公司路由出问题了 重启一下路由试试看 但为什么只有访问我们自己网站会出事 人品问题 做程序员还是唯物一点比较好 不管 反正没人抱怨这事 99 的用户会遇到问题时不会报告 Saturday September 14 13 分析 Saturday September 14 13 分析 tcpdump抓包 客户端 发了6个 SYN 包 到最后一个才收到 SYN ACK 服务端 确实收到了6个 SYN 包 而且确实前面5 个 SYN 包都没有回复 从其他网络访问 确实在首个 SYN 包之后返回 Saturday September 14 13 分析 tcpdump抓包 客户端 发了6个 SYN 包 到最后一个才收到 SYN ACK 服务端 确实收到了6个 SYN 包 而且确实前面5 个 SYN 包都没有回复 从其他网络访问 确实在首个 SYN 包之后返回 结论 问题跟路由 线路无关 确实是服务端的问题 Saturday September 14 13 分析 Saturday September 14 13 分析 再重新分析 tcpdump 的记录 发现前5个 SYN 包带了 timestamp 第6个没带 尝试关掉客户端 TCP timestamp 瞬间响应 尝试关掉服务端 TCP timestamp 瞬间响应 Saturday September 14 13 分析 再重新分析 tcpdump 的记录 发现前5个 SYN 包带了 timestamp 第6个没带 尝试关掉客户端 TCP timestamp 瞬间响应 尝试关掉服务端 TCP timestamp 瞬间响应 结论 Bug 与 timestamp 相关 但仍然无法 解释为什么其他网络没问题 Saturday September 14 13 解决方案A Saturday September 14 13 解决方案A 关掉服务端的 TCP timestamp TCP timestamp 会影响传输速度 但影 响不大 Saturday September 14 13 解决方案A 关掉服务端的 TCP timestamp TCP timestamp 会影响传输速度 但影 响不大 疑问仍然存在 为什么服务器不响应某 些 timestamp 包 有时候又能正常响应 Saturday September 14 13 分析 Saturday September 14 13 分析 看内核源码 CTO 亲自操刀 入口机器有大量的反向代理 端口经常不够用 所以开 启了TIME WAIT 端口重用 开启了 TIME WAIT 端口重用后 服务端要求同一个IP的 SYN 包 timestamp 必须是顺序的 办公网络是内网 并且对我们官网访问很频繁 导致故障 发生 Saturday September 14 13 分析 看内核源码 CTO 亲自操刀 入口机器有大量的反向代理 端口经常不够用 所以开 启了TIME WAIT 端口重用 开启了 TIME WAIT 端口重用后 服务端要求同一个IP的 SYN 包 timestamp 必须是顺序的 办公网络是内网 并且对我们官网访问很频繁 导致故障 发生 看来找到真实的原因了 有没有更好地解决方案 Saturday September 14 13 解决方案B nginx 高版本已经支持 keep alive 升级 nginx 启用 keep alive 降低端口占用 关闭端口重用 并加强端口数的监控和 报警 Saturday September 14 13 我所看到的乱象 用寻找 workaround 代替解决问题 Saturday September 14 13 我所看到的乱象 用寻找 workaround 代替解决问题 换个浏览器吧 Saturday September 14 13 我所看到的乱象 用寻找 workaround 代替解决问题 换个浏览器吧 重启 清 cookie 清 cache 重新登录 Saturday September 14 13 我所看到的乱象 用寻找 workaround 代替解决问题 换个浏览器吧 重启 清 cookie 清 cache 重新登录 现场被破坏得干干净净 Saturday September 14 13 我所看到的乱象 用寻找 workaround 代替解决问题 换个浏览器吧 重启 清 cookie 清 cache 重新登录 现场被破坏得干干净净 对于那些不易再现的 Bug 就损失了一次修 复的机会 Saturday September 14 13 我所看到的乱象 尝试用试错法解决所有问题 Saturday September 14 13 我所看到的乱象 尝试用试错法解决所有问题 升级依赖包 升级插件 Saturday September 14 13 我所看到的乱象 尝试用试错法解决所有问题 升级依赖包 升级插件 随便猜一个原因 改两句代码 然后 重新测试 Saturday September 14 13 我所看到的乱象 缺少反省 Saturday September 14 13 我所看到的乱象 缺少反省 寻找到 workaround 便认为问题解决了 Saturday September 14 13 我所看到的乱象 缺少反省 寻找到 workaround 便认为问题解决了 没有用测试固化 Bug 容易产生回归Bug Saturday September 14 13 我所看到的乱象 缺少反省 寻找到 workaround 便认为问题解决了 没有用测试固化 Bug 容易产生回归Bug 一个 Bug 可能在多处出现 没有尝试搜索其他有 Bug 的地方 Saturday September 14 13 我所看到的乱象 缺少反省 寻找到 workaround 便认为问题解决了 没有用测试固化 Bug 容易产生回归Bug 一个 Bug 可能在多处出现 没有尝试搜索其他有 Bug 的地方 没有通过补充日志等手段来降低日后定位Bug的难 度 Saturday September 14 13 我所看到的乱象 海恩法则 每一起严重事故的背后 必然 有29次轻微事故和300起未遂先兆以及 1000起事故隐患 Saturday September 14 13 我们推荐的方法 出了问题不要靠猜 浏览器 服务端日志 抓包工具 Saturday September 14 13 浏览器看什么 Saturday September 14 13 浏览器看什么 是否有 JS 错误 Saturday September 14 13 浏览器看什么 是否有 JS 错误 网络请求是否发出 Saturday September 14 13 浏览器看什么 是否有 JS 错误 网络请求是否发出 发出的请求是否正确 URL 方法 参数 Accept Cookie Saturday September 14 13 浏览器看什么 是否有 JS 错误 网络请求是否发出 发出的请求是否正确 URL 方法 参数 Accept Cookie 期望的返回值是什么 Saturday September 14 13 浏览器看什么 是否有 JS 错误 网络请求是否发出 发出的请求是否正确 URL 方法 参数 Accept Cookie 期望的返回值是什么 Request Id Saturday September 14 13 Request Id 对每次请求产生一个唯一的Id Saturday September 14 13 Request Id 对每次请求产生一个唯一的Id 该 Id 以 HTTP Response Header 的方式 发送到客户端 Saturday September 14 13 Request Id 对每次请求产生一个唯一的Id 该 Id 以 HTTP Response Header 的方式 发送到客户端 可以在 nginx 层面实现或者在业务逻辑层 面实现 Saturday September 14 13 服务端日志看什么 四要素 Saturday September 14 13 服务端日志看什么 四要素 时间 开始时间 总耗时 Saturday September 14 13 服务端日志看什么 四要素 时间 开始时间 总耗时 谁 用户Id Session Id Request Id Saturday September 14 13 服务端日志看什么 四要素 时间 开始时间 总耗时 谁 用户Id Session Id Request Id 做什么 URL 方法 XHR format 参数 注意 保护密码 Saturday September 14 13 服务端日志看什么 四要素 时间 开始时间 总耗时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚协议中涉及人寿保险合同解除及权益补偿协议
- 离婚协议公证与共同财产分割、债务处理合同
- 2025年区块链技术在版权保护与版权交易中的应用报告
- 离婚协议书模板:无子女家庭财产分割协议范本
- 2024-2025年生物医疗传感器金纳米粒子应用创新及市场趋势报告
- 2025年生物质能新能源汽车市场投资机会分析报告
- 2025年福建生物考试题目及答案
- 基于2025年高校创新创业教育的课程体系评估与改进研究报告
- 乡村旅游项目2025年社会稳定风险评估与风险评估方法创新报告
- 2025年福建生物期中试卷及答案
- 抗菌药物临床应用指导原则
- MirrorView切换手册模板
- 急救车必备药品和物品 急救车物品药品管理
- GB/T 3253.8-2009锑及三氧化二锑化学分析方法三氧化二锑量的测定碘量法
- GB/T 24720-2009交通锥
- GB/T 15065-2009电线电缆用黑色聚乙烯塑料
- 陈嘉庚生平介绍(中文+英文版)
- DB21T 3354-2020 辽宁省绿色建筑设计标准
- 我和我的祖国课件
- 语言领域核心经验《学前儿童语言学习与发展核心经验》
- 《基因组学》课程教学大纲(本科)
评论
0/150
提交评论