知识卡片
带着假设去查数据不如先看数据
内容
调试性能问题时,人很容易先凭经验猜”问题大概率出在后端”,然后带着这个假设去局部验证,却忽略了自己很久没碰过的代码路径——这类盲区恰恰是问题最可能藏身的地方。一次调试运行缓慢的Web服务器时,原以为问题出在后端,但性能分析器显示真正原因是把每个输入碎片记录到磁盘并调用sync导致的延迟,这个发现得益于抛开最初假设、更深入研究系统。可观测性工具不能替代对系统的理解,但能防止经验主义的盲点让排查南辕北辙。
参考来源
- 位置:《Google系统架构解密:构建安全可靠的系统》第15章《调查系统》15.1.2节用真实数据检验假设(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_121.html`)
- 结论依据:原文说明"在调试时,往往会在实际查看系统之前就对问题的根本原因做出推测……由于问题通常存在于调试人员很久没有接触的代码中,这种做法会引入盲点",并以Web服务器案例说明分析器显示真实瓶颈在磁盘sync而非最初怀疑的后端。
- 原始内容:例如,有一次在调试运行缓慢的Web服务器时,我们以为问题出在后端。但分析器显示,将每个可能的输入碎片记录到磁盘然后调用sync的做法才是导致大量延迟的原因。我们能够发现这一点,得益于抛开最初的假设,并更深入地研究这个系统。