赞
踩
1、网络原因
2、外部接口故障
3、中间件原因
4、服务自身原因
1、下线:将故障的实例从nacos下线,保留现场供问题排查
2、重启:如果不能通过下线解决,比如队列消费导致的原因等,则需要重启
3、扩容:如果是容量问题,或者通过扩容能解决,直接扩容,先保障业务,待问题解决后再回收资源
1、查看监控
2、查看日志
3、查看调用链
4、登录服务器排查
四、常用工具
1、系统命令
jps 或者 ps -ef|grep java
top -H -p pid,其中pid为进程Id
1、安装lrzsz(可选,已安装则忽略):yum install lrzsz
2、从服务端发送文件到本地:sz filename
3、从本地上传文件到服务端:rz
1、将本地文件拷贝到远程:scp local_file remote_username@remote_ip:remote_folder/remote_file
2、将远程文件拷贝到本地:scp remote_username@remote_ip:remote_folder/remote_file local_file
2、网络命令
1、查看所有连接:netstat -an
2、通过管道搜索:netstat -an |grep CLOSE_WAIT
3、查看监听状态的端口: netstat -an | grep LISTEN
1、抓取某端口的所有包:tcpdump -iany -Xns0 port 16000
2、抓取来自某host的包:tcpdump -iany -Xns0 src host 10.1.7.7
3、抓取发往某host的包:tcpdump -iany -Xns0 dst host 10.1.7.7
4、抓取从一台机器发往另外一台机器的包:tcpdump -iany -Xns0 dst host 10.1.7.7 and src host 10.1.1.102
1、安装httpry(可选,已安装则忽略):yum install httpry
2、抓取所有http包:httpry
3、抓取所有http包,并支持通过管道grep过滤:httpry | grep cmq
4、抓取符合tcpdump表达式的包:httpry 'src host 10.1.1.102 and dst host 10.1.2.10'
3、在线调试工具arthas,详细文档参考:Arthas 用户文档 — Arthas 3.5.4 文档
1、java -jar arthas-boot.jar
2、选择进程对应的编号
exit
help
命令 -h,比如查看thread的命令使用方式,输入:thread -h
dashboard
jvm,其中最后两行有文件描述符的信息,其中MAX-FILE-DESCRIPTOR-COUNT即为能打开的最大数量
1、查看所有线程:thread -all
2、通过grep搜索符合条件的线程:thread -all | grep TIMED_WAITING
3、查看被阻塞的线程:thread -b
4、查看CPU占用的前3的线程:thread -n 3 (找到里面对应的类,可用于反编译class)
5、查看springboot中内置tomcat的线程:thread -all | grep http,tomcat工作线程默认有200个,另外还有Acceptor、Poller、Timeout线程,可以通过线程名称来查看
6、查看线程的堆栈信息:thread id,比如thread 4741
反编译类:jad com.ruqimobility.marketing.application.biz.CampaignBiz
反编译类的某个方法:jad com.ruqimobility.marketing.application.biz.CampaignBiz checkCampaignInfo
1、追踪方法:trace 类 方法,比如trace com.ruqimobility.marketing.application.biz.CampaignBiz checkCampaignInfo
2、过滤超过指定耗时的方法:trace 类 方法 '#cost>时间(单位毫秒)',比如过滤耗时超过100毫秒的方法:trace com.ruqimobility.marketing.application.biz.CampaignBiz checkCampaignInfo '#cost>100'
3、通过表达式追踪多个类和方法:trace -E com.test.ClassA|org.test.ClassB method1|method2|method3
1、查看http调用时的index:tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod,当有http请求时会得到如下结果
;如果没有http请求时可以通过http://host:port/actuator/prometheus触发微服务的监控接口,其中host和port分别为微服务的IP地址和端口。
2、通过指定的index查看bean
查看bean
tt -i 1178 -w 'target.getApplicationContext()'查看bean
tt -i 1078 -w 'target.getApplicationContext().getBean("nacosConfig")'
查看bean的字段
tt -i 1078 -w 'target.getApplicationContext().getBean("LBSConfig").getKey()'查看实现bean
tt -i 1078 -w 'target.getApplicationContext().getBean("LBSServiceImpl")'
getstatic com.ruqimobility.nacosapi.nacos.SpringContextHolder DEV
getstatic com.ruqimobility.nacosapi.nacos.SpringContextHolder context
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。