发布于: 修改于: Android转发:0回复:40喜欢:7
从上周四开始,理杏仁开始不停地挂,每天都能收到n条报警短信。为了解决这个问题,三个合伙人一起开始了三天没日没夜的找bug行动。首先确定是内存被突然使用完造成的;jeninks不再执行webpack build,转移到本地build,写工具上传,依旧挂;然后各种内存工具监控,因为采集数据量过大,造成了更频繁的挂;然后尝试压缩一切别的工具的内存空间使用,还是挂;然后猜测网站一切可能导致使用内存使用高的页面并改正,还是挂;然后找出整个网站cpu密集计算的地方,把筛选器效率提升了三倍不止,还是挂……
经验告诉我应该就是周四前面一天某行代码改动所致,于是我把周四前两天提交的所有代码查了一遍,同时还把页面测了一遍,没发现问题……
最后迫不得已,自己整了套工具,将所有数据库查询写入日志,然后用工具查询挂的瞬间没有数据库返回的日志,终于找到了bug……有一个查询在没有数据的情况下居然绕开了我们的数据库安全查询检查,返回了几十万条数据……
Bug本身是个小bug,结果却搞出来了一套数据build工具,以及一套内存监测工具,同时还找出了系统内在潜在的安全隐患,还让整个网站高性能损耗的地方得以被高效优化。[捂脸]

精彩讨论

精神老小伙儿03-17 00:40

慢查询日志没看吗

浮云资本03-17 00:17

“有一个查询在没有数据的情况下居然绕开了我们的数据库安全查询检查,返回了几十万条数据”,莫非是,注入这个sql语句,可以把你们的数据都拿走

有谦03-17 01:43

这个,虽然定位问题的过程可能没有直击本质走了点弯路,但结果是不错的。
以前,生产环境出现bug会觉得很遗憾,甚至有点责怪自己或他人;但是现在觉得,每一次bug都是改善系统或优化规范、流程的契机。看开了,团队和系统也变得更好。

全部讨论

03-17 08:21

Jenkins

03-17 05:55

03-17 02:42

听起来很厉害呢

如果微服务数目大的话,可以考虑上trace

03-17 00:48

夜猫子好多

03-17 00:19

太强了!