让我怀疑现实的 bug,持续了几个小时

发布: (2026年2月5日 GMT+8 10:30)
3 min read
原文: Dev.to

Source: Dev.to

Background

一切都正常。

事后看来,这正是问题所在。

我刚刚发布了一个小的后端改动。那种几乎不需要思考的改动。测试通过了。本地环境显示绿色。我甚至做了我们大家都假装总会做的额外手动检查。

Symptoms

几小时后,生产环境开始表现得……怪怪的。不是崩溃,也不是宕机,只是有点不对劲。

有些请求失败,其他请求成功。刷新页面,结果又变了。那一刻我真的怀疑自己是不是在无意中给自己的理智做压力测试。

我首先想到的是数据。然后是流量。接着是时机。最后我甚至觉得自己惹恼了 JavaScript 的神灵。

Investigation

我加了日志。大量日志。那种你发誓以后一定会删掉的日志。没有出现明显的异常。

这时我注意到一个既小又极其恼人的细节。一个配置值在生产环境中是 undefined,而在我的机器上却完好无损。我盯着它看了比我愿意承认的时间还久。

我一直以为我的环境变量在各处都是一样的。事实并非如此。本地有一个旧的配置文件悄悄帮我填补了这个变量,而在生产环境中,这个变量根本不存在,我的代码因此陷入混乱。

Root Cause

缺失的环境变量导致代码行为不可预测。

Resolution

一旦发现这一点,修复几乎毫无新意:添加校验、设置默认值,然后重新部署。

Takeaway

真正的 bug 并不是代码本身,而是我对环境会礼貌且一致地行为的假设。

从那以后,每当 bug 看起来随机出现时,我都会先问自己一个简单的问题:我假设的“显然相同”的东西实际上可能并不相同吗? 这能节省时间,也能保留一点尊严。

Back to Blog

相关文章

阅读更多 »