线上系统性问题定位与方法论

需掌控系统总体指标java

  • 系统层  也就是咱们的部署软硬件环境。一般包含CPU、磁盘、内存、网络IO等。咱们的系统是分布式的,仍是单机应用?CPU是几核的?物理机仍是虚机?内存、磁盘是多大?网卡的规格?web

  • 软件层  也是咱们部署的软件环境。负载均衡服务器?JDK版本?web服务器(Tomcat等)以及JVM参数设置?数据库、缓存使用的是哪一种产品?数据库

  • 应用层  也就是咱们的系统自己。关键接口的平均响应时间(RT)是多少?服务的QPS是多少?某个接口的并发数能承受多少?缓存

 

保留事故现场,基本方式以下:服务器

a. 执行top命令,若CPU空闲程度较低:shift+p按CPU使用率倒排,记录最耗资源的进程信息。网络

b. 执行free –m命令,若内存使用量高:执行top,shift+m按内存使用率倒排,记录最耗资源的进程信息。并发

c. 对嫌疑进程执行ps xuf | grep java,打印进程详细信息并记录。负载均衡

d. 使用jstack <PID> >jstack.log收集线程信息(反复多取几回)。分布式

e. 使用jstat–gcutil <PID> 查看Old区占用率,对接近100%的进程执行jmap<PID> > jmap.log保留内存信息。线程

 

https://mp.weixin.qq.com/s/6WqfBFWioxucZACYnaeMZg

相关文章
相关标签/搜索