线上突然出 bug 怎么找?

2022-05-02 01:32:12 +08:00
 christin

求传授一点经验
昨晚 10 点多线上出 bug 了,忙到现在 1 点半了。还是我们组长帮我一起看才找到问题了。
碰到 bug 就很慌,担心影响线上业务,束手无策。求大佬指点一下。

5988 次点击
所在节点    程序员
43 条回复
feller
2022-05-02 20:14:11 +08:00
这就体现了一个公司的日志平台的重要性
killerv
2022-05-02 20:15:32 +08:00
主要是看日志,一定要养成日志管理的好习惯,另外排查思路也很重要。快速定位问题是个很重要的能力
wintercoder
2022-05-02 21:35:59 +08:00
除了 log ,还可以靠 arthas 的 watch 功能,可以看在线每个函数的出入参 https://github.com/alibaba/arthas
debuginn
2022-05-02 21:53:28 +08:00
Go 的话 用 pprof 刚写了一个教程: https://www.debuginn.cn/7444.html
imycc
2022-05-02 22:05:07 +08:00
线上出问题,首先定位是否是由于新版本引起的,能否直接回滚(跟其他业务是否存在依赖)。
如果是内部微服务,看你们使用的框架是否提供业务间调用的监控,帮助定位到具体出问题的功能。如果是 http 服务的话就看是哪些 url 出错。
定位到具体出错的地方,接下来就得看具体问题分析了。基本手段就是查日志,看出出错的位置,再根据代码逻辑推理。
最烦人的时候日志看起来正常,有问题的地方没打日志出来,而测试环境复现不出来。这是所谓的“丢失现场”。只能把那个时段可疑的请求分个类,慢慢试了
christin
2022-05-02 23:21:53 +08:00
@killerv #22 我觉得我的快速定位问题能力就不太行,遇到问题手忙脚乱
Davic1
2022-05-02 23:27:36 +08:00
楼主需要的是两个字, 冷静。 遇到紧急的问题、bug , 先冷静。
aragakiyuii
2022-05-02 23:42:37 +08:00
打日志,打 trace
dqzcwxb
2022-05-03 00:17:42 +08:00
java 的话用 arthas 查
RedBeanIce
2022-05-03 01:22:12 +08:00
@dqzcwxb 线上一般是不可能有 arthas 的
RedBeanIce
2022-05-03 01:24:20 +08:00
@imycc +1

看看链路日志,或者入参,一行行代码走查吧,,没什么好的办法

楼上说的 arthas ,线上环境一般不可能有吧
cnrting
2022-05-03 04:07:29 +08:00
先重启再慢慢看日志🐶
catsoul
2022-05-03 09:05:13 +08:00
找 bug 还好说,我以前遇到过一个面试问我只有一台服务器,不能停服务的情况下怎么修复线上出现的 bug...

也怪我自己学艺不精,我头都想破了也没想出办法
documentzhangx66
2022-05-03 11:07:54 +08:00
@catsoul 因为面试官降维打击了,这对被面试者很不公平的。

因为这玩意牵涉到系统架构、软件开发模式。

举个小例子,热修复、热插拔的系统架构,至少需要入口有负载均衡,中间的 Server 与 Client 都有对应的版本控制,后面是一堆不同版本的应用集群。哪个版本有问题,负载均衡配置一下就 OK 。而且负载均衡设备,贵的设备有冗余接口,实现双机热备,便宜的没有。这还是简单的方案,高级方案能做到王者荣耀这种 APP 都不用重启,在战斗中热修复 Bug ,这些知识面试官都不一定懂,你要懂也不会去这种小公司。
catsoul
2022-05-03 11:19:43 +08:00
@documentzhangx66 感谢大佬的讲解!确实有好多我完全都没有接触过的技术,感觉可以根据大佬这段话去针对性的补一波了!!
xx19941215
2022-05-03 12:45:45 +08:00
一般我是看日志
killerv
2022-05-03 13:08:35 +08:00
@christin 主要是得练,这就是经验的重要性;我觉得你可以针对性的搞一些故障演练
janus77
2022-05-03 13:52:19 +08:00
有 log 看 log ,一定要尝试复现,复现是最重要的
你要拿到 bug 发生时的环境,服务端环境、客户端环境、前端环境,尽量模拟一下
如果不是那种报异常的 bug ,自己初步判断一下可能从哪个环节出问题,判断不了就尝试复现
修好了也要复现一下,有时候你以为的修好了并不是真的
dqzcwxb
2022-05-03 14:29:39 +08:00
@RedBeanIce #30 一个用来实时观察 jvm 的工具却不在实时环境使用,我没啥好说的
bthulu
2022-05-04 11:15:17 +08:00
@RedBeanIce arthas 就是线上用的啊, 开发环境谁还要用 arthas 啊, IDE 断点分析不比 arthas 好用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/850448

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX