很多时候我们发现线上cpu使用率过高或者内存溢出等,其实在linux环境下,可以查看它的使用情况和具体的报错信息来查看占用高cpu的进程【log@task-a-shprod-1~]$toptop-12:00:19up20days,19:46,1user,loadaverage:2.42,1.71,2.40Tasks:98total,2running,96sleeping,0stopped,0zombie%Cpu(s):53.1us,16.9sy,0.0ni,27.8id,0.0wa,0.0hi,2.3si,0.0stKiB内存:16267724total,353600free,8349840used,7564284bufftal/cacheKiBSwap,to00个免费,0个使用。7557728availMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND15980root20083759643.148g14824S175.720.33329:10java348root200625602006819612R85.30.113592:20systemd-journal8978root20078983041.205g14804S22.37.856:33.51java10214root20080651481.695g14800S1.310.915:43.18java1038root10-10128800122489300S1.00.1294:46.14AliYunDun9605root20079704961.689g14784S1.010.94:29.24java3root200000S0.30.012:25.10ksoftirqd/09root200000S0.30.043:15.84rcu_sched13root200000S0.14:91root2004338437882496S0.00.00:25.62Systemd可以看到PID最高的Java进程是15980,占175.7%。查看进程中最耗CPU的子线程[log@task-a-shprod-1~]$top-Hp15980top-12:01:25up20days,19:48,1user,loadaverage:4.98,2.55、2.64Threads:总共58个,运行2个,睡眠56个,停止0个,僵尸0%Cpu(s):65.4us,15.2sy,0.0ni,17.2id,0.1wa,0.0hi,2.1si,0.0stKiBMem:总共16267724个,免费322392个,使用8380124个,7565208个增强/cacheKiBSwap:总计0个,免费0个,使用0个。7527436availMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND16131root20083759643.223g14824S44.920.8651:07.49java16130root20083759643.223g14824S35.920.8628:32.23java16132root20083759643.223g14824R30.920.8569:00.13java16133root20083759643.223g14824S25.920.8638:04.25java16129root20083759643.223g14824R12.020.8678:13.62java15982root20083759643.223g14824S0.720.812:06.16java15983root20083759643.223g14824S0.720.812:07.24java16149root20083759643.223g14824S0.720.825:09.56java15984root20083759643.223g14824S0.320.812:07.52java15985root20083759643.223g14824S0.320.812:04.10java15987root20083759643.223g14824S0.320.86task-a-shprod-1~]$printf"%x\n"161313f03查询出现问题的具体代码位置[log@task-a-shprod-1~]$jstack15980|grep3f03-A30可以定位到问题代码
