机器负载分析
通过 top 命令分析系统负载,发现 load average = 1.5 左右,但是机器是4核的,所以负载并不高-
找到对应服务进程中使用 cpu 最高的线程
top -Hp 进程号
发现 3306 这个线程使用 cpu 高达 88.9%,于是需要分析改线程做了啥
-
打印线程栈信息:jstack 进程号 > stack.txt
-
找到 3306 的线程栈信息
将 3306 转换为 16进制(ceb),然后再输出的线程栈文件 stack.txt 找下面的信息,"VM Thread" 是JVM的线程,怀疑是GC 线程。
-
分析 GC 详情
jstat -gcutil 进程号 1000 5(其中1000是每隔1s收集,5是收集次数)
发现 O(老年代)一直经过 FGC 后没有降多少,还处于高于98%的情景,所以得出老代码的堆内存不够用
jstat -gcutils 3282 1000 5
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 17.46 0.00 100.00 98.68 97.39 95.20 8942 258.342 26486 2041.388 2299.730 30.46 0.00 100.00 98.68 97.39 95.20 8942 258.342 26486 2041.388 2299.730 35.89 0.00 100.00 98.68 97.39 95.20 8942 258.342 26487 2041.431 2299.773 42.65 0.00 100.00 98.68 97.39 95.20 8942 258.342 26488 2041.516 2299.858 51.34 0.00 100.00 98.20 97.39 95.20 8942 258.342 26488 2041.516 2299.858
-
增大老年代的堆内存,重启
以前的配置:-Xmx1536m -Xms1536m -Xmn800m
更改后的配置:-Xmx1536m -Xms1536m -Xmn512m
1次生产环境GC频繁导致接口出现超过问题的排查经过
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...