免费网站建设联系电话,注册公司域名后如何做网站,阜阳市城乡建设局网站,推广软件排行榜前十名常用工具
命令查询资源信息 top#xff1a;显示系统整体资源使用情况 vmstat#xff1a;监控内存和 CPU iostat#xff1a;监控 IO 使用 netstat#xff1a;监控网络使用 查看java进程 jps 查看运行时信息 jinfo pid gc工具 jstat: 查看jvm内存信息 GCViewer — 离线分析G…常用工具
命令查询资源信息 top显示系统整体资源使用情况 vmstat监控内存和 CPU iostat监控 IO 使用 netstat监控网络使用 查看java进程 jps 查看运行时信息 jinfo pid gc工具 jstat: 查看jvm内存信息 GCViewer — 离线分析GC日志 gceasy: https://gceasy.io/ gceasy 使用https://blog.csdn.net/weixin_42030357/article/details/122707538
堆栈分析工具 jstack: 查看堆栈信息、锁等待信息、导出堆栈信息 fastThread: https://www.fastthread.io/ MAT — 分析堆转储文件 fastThread使用https://www.6hu.cc/archives/115077.html
堆信息分析 jmap: 生成堆转储快照 jvisualvm: java自带的分析工具 heap hero: https://heaphero.io/ jhat堆转储快照分析 性能优化工具 XXFOX Arthas(阿尔萨斯) 相关参数
堆设置
-Xms:初始堆大小
-Xmx最大堆大小
-Xss规定每个线程虚拟机栈大小
-XX:NewSizen:设置年轻代大小
-XX:NewRation:设置年轻代和年老代的比值。如为 3 表示年轻代和年老代比值为 13年轻代占整个年轻代年老代和的 1/4
-XX:SurvivorRation:年轻代中 Eden 区与两个 Survivor 区的比值。注意 Survivor 区有两个。如 3 表示 Eden3 Survivor2一个 Survivor 区占整个年轻代的 1/5
-XX:MaxPermSizen:设置持久代大小
-XX:MaxTenuringThresholdn:设置经过多少次GC进入老年代
-XX:PretenureSizeThresholdn :设置多大对象直接进入老年代单位:byte
-XX:HeapDumpOnOutOfMemoryErrorOOM异常出现之后自动生成dump文件
-XX:HeapDumpPathpath 设置dump文件路径java -XX:PrintCommandLineFlags -version:查看虚拟机配置收集器设置
-XX:UseSerialGC:设置串行收集器
-XX:UseParallelGC:设置并行收集器
-XX:UseParalledlOldGC:设置并行年老代收集器
-XX:UseConcMarkSweepGC:设置并发收集器并行收集器设置
-XX:ParallelGCThreadsn:设置并行收集器收集时使用的 CPU 数。并行收集线程数
-XX:MaxGCPauseMillisn:设置并行收集最大的暂停时间如果到这个时间了垃圾回收器依然没有回收完也会停止回收
-XX:GCTimeRation:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1n)
-XX:CMSIncrementalMode:设置为增量模式。适用于单 CPU 情况
-XX:ParallelGCThreadsn:设置并发收集器年轻代手机方式为并行收集时使用的 CPU 数。并行收集线程数打印 GC 回收的过程日志信息
-XX:PrintGC
-XX:PrintGCDetails
-XX:PrintGCTimeStamps
-Xloggc:filename问题分析
问题排查一般关注四个指标 吞吐量 响应时间 报错信息 资源使用情况
cpu飚高如何排查
1. 启动java -jar 2_cpu-0.0.1-SNAPSHOT.jar 8 log.file 21
2. 一般来说应用服务器通常只部署了java应用可以top一下先确认是否是java应用导致的命令top
3. 如果是查看java进程ID命令jps -l
4. 找出该进程内最好非CPU的线程命令top -Hp pid
5. 将线程ID转化为16进制命令printf %x\n 线程ID
6. 导出java堆栈信息根据上一步的线程ID查找结果命令jstack pid stack.txt |grep 2ed7 stack.txt -A 20
7. 可以文件中直接搜16进制80%情况可以直接定位到方法的信息或者将stack.txt导入fastThread进行分析一般查看线程数、锁等待、cpu线程、堆栈调用图内存飚高如何排查
1. 先观察垃圾回收的情况jstat -gcutil pid 1000(打印内存情况一秒一次)jstat -gc pid 1000查看gc日志或者导入GC分析工具中
2. 如果每次 GC 次数频繁而且每次回收的内存空间也正常那说明是因为对象创建速度快导致内存一直占用很高
3. 如果每次回收的内存非常少那么很可能是因为内存泄露导致内存一直无法被回收
4. 导出堆内存快照jmap -dump:fileheap.dump pid
5. 导入工具中查看jvisualvm 或者 heap hero按照大对象倒序排列一般就可以定位问题Full GC问题排查
查看参数配置以及目前内存使用情况是否是参数设置的问题可能是内存参数设置的不合理或者添加了一些其他参数导致的分析堆内存快照查看是否是因为内存泄漏导致的查看cpu使用率定位到线程中cpu使用率高的位置是否手动调用了System.gc()
接口响应延迟排查
查看该接口具体调用耗时可以使用链路追踪工具那么可能有以下情况导致 网络超时 调用了第三方接口或者其他服务 锁的等待 资源不够线程资源、连接资源。。。 数据库sql执行时间长 缓存不能命中检查jvm监控信息gc回收频率gc回收大小各个区使用情况大对象等检查cpu、内存是否正常检查应用qps是否负载过高