做足监控
Prometheus——监控工具
ELK——日志收集、展示套件
Micrometer——监控JVM
常见指标
应用:业务日志、错误日志
JVM:GC、内存、类加载、线程
OS:硬盘、内存、cpu、网络
外部:专线带宽、交换机基本情况、网络延迟
定位工具
目标 | 工具 |
---|---|
cpu | top、vmstat、pidstat、ps |
内存 | free、top、ps、vmstat、cachestat、sar |
IO | lsof、iostat、pidstat、sar、iotop、df、du |
网络 | ifconfig、ip、nslookup、dig、ping、tcpdump、iptables |
实践案例
- top + jstack,分析阻塞线程
- 压测+Jprofiler,分析热点函数
- 查看gclog,分析gc情况
- netstat 检查外调连接数量,大量tcp堆积说明调用某个服务有问题,tcpdump、wireshark 分析外调的详细信息
- 观察曲线指标,达到水平线上说明资源瓶颈
- jmap + jhat + jvisualvm ,导出+分析堆内存快照
- jconsole 监控jvm基础资源使用状况
top + jstack,分析阻塞线程
top -Hp $pid #获取$pid对应的所有线程
p #按cpu消耗排序
jstack -l $pid #获取进程对应的所有线程栈快照
查看gclog,分析gc情况
可以使用ps获取gcLog的位置,如果是GC压力,说明内存使用不正常,从而进一步跟踪内存快照,排查内存情况
ps -ef|grep bootstrap|grep gc