做足监控

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

实践案例

  1. top + jstack,分析阻塞线程
  2. 压测+Jprofiler,分析热点函数
  3. 查看gclog,分析gc情况
  4. netstat 检查外调连接数量,大量tcp堆积说明调用某个服务有问题,tcpdump、wireshark 分析外调的详细信息
  5. 观察曲线指标,达到水平线上说明资源瓶颈
  6. jmap + jhat + jvisualvm ,导出+分析堆内存快照
  7. jconsole 监控jvm基础资源使用状况

top + jstack,分析阻塞线程

top -Hp $pid #获取$pid对应的所有线程
p #按cpu消耗排序

jstack -l $pid  #获取进程对应的所有线程栈快照

查看gclog,分析gc情况

可以使用ps获取gcLog的位置,如果是GC压力,说明内存使用不正常,从而进一步跟踪内存快照,排查内存情况

ps -ef|grep bootstrap|grep gc