线上问题排查的四类方法
2019-08-26 06:08:49来源:博客园 阅读 ()
线上问题排查的四类方法
最正统的方法
日志
这是排查问题的最常用的方法,需要预估自己每日日志量和需要存储的日志时间。申请磁盘空间时一般会留35%的冗余以备突发流量。
一般需要打日志的有:每个对外提供方法的入口和出口,调用第三方的调用前和调用后。打印内容主要包括入参和出参。https://github.com/xiexiaojing/concise-logger 我在简明日志规范里定义:几种常用的类里用切面的形式注入日志。
监控
传统的方法如果JVM出现gc等问题需要先打开gc日志,这会牺牲一些效率。但是现在业界已经普遍将这些数据上报到系统中,比如欧美常用的prometheus,国内用小米的falcon比较多。
对于数据库、调用量、响应时长等监控系统也都有统计。美团点评的CAT不仅集成了这些,还集成了依赖分析、依赖分析、心跳报表、业务大盘等。挺方便的。
报警
报警不仅可以发现问题,还可以将发生问题时已经执行到的阶段作为报警信息一起发出,便于快速定位。
linux命令
tcpdump
如果收到不明数据,又不知道数据从哪里来的,最简单的方法就是tcpdump进行抓包分析,确定数据来源。
netstat
通常用来监听连接端口的状态。常见的状态主要有:
-
listen状态:正在监听来自远方的TCP端口的链接请求。
-
syn-sent状态:在发送链接请求后等待匹配的连接请求。
-
syn-received状态:在收到和发送一个链接请求后等待对方对链接请求的确认。
-
established状态:代表一个打开的链接。
-
fin-wait-1状态:等待远程tcp连接中断请求,或先前的链接中断请求的确认。
-
fin-wait-2状态:从远程tcp等待链接中断请求。
-
close-wait状态:等待从本地用户发来的链接中断请求。
-
closing状态:等待远程tcp对链接中断的确认。
-
last-ack状态:等待原来的发现远程tcp的链接中断请求的确认。
-
tie-wait状态:等待足够的时间以确保远程tcp接收到连接中断请求的确认。
-
closed状态:没有任何连接状态。
再现
我无数次的假装路过,只是为了与你一次偶然的邂逅……
这句话用到希望复现线上问题时,往往描述到位的想哭。
如果线上运行的程序遇到问题需要排查,建议优先使用最正统的方法,不行的话linux命令也可以接受。内存泄漏、并发问题等的再现成本很高。并且极其不利用快速恢复。
线上调试
如果再现之后还不不能确定问题的原因,还有最后一招不到万不得已不要用:线上调试。
工具:线上机器是linux系统,本地intelij
复制下面的信息
在线上启动参数中加上上面信息,重启。
sudo svc -du /service/XXXX/
看看监听端口有没有起来
lsof -i :8083
起来后,本地inteij开启远程debug即可。记得之前有次线上事故就是有个小哥在线上开启远程debug,请求打到断点卡在那里了。
总结
事实、数据、推论、猜测
推荐阅读
项目改进的四个抓手
技术境界的二三四
工作中常见的五种技术leader
原文链接:https://www.cnblogs.com/xiexj/p/11373936.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 面试的时候按照这个套路回答 Java GC 的相关问题一定能过 2020-06-08
- 我可真是醉了,一个SpringBoot居然问了我30个问题 2020-06-08
- Mybaties简单实例测试及注意问题 2020-06-07
- java对象指向问题 2020-06-07
- 解决IDEA Maven下载依赖包速度慢问题 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash