JVM调优 Linux相关指令

Linux相关指令

top

主要查看%CPU%MEM,还有load averageload average后面的三个数字,表示系统1分钟、5分钟、15分钟的平均负载值。如果三者平均值高于0.6,则复杂比较高了。当然,用uptime也可以查看。

vmstat

查看进程、内存、I/O等多个系统运行状态。2表示每两秒采样一次,3表示一共采样3次。procsr表示运行和等待CPU时间片的进程数,原则上1核CPU不要超过2。b是等待资源的进程数,比如磁盘I/O、网络I/O等。

[root@ ~]# vmstat -n 2 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 173188 239748 1362628    0    0     0     3   17    8  0  0 99  0  0
 0  0      0 172800 239748 1362636    0    0     0     0  194  485  1  1 99  0  0
 1  0      0 172800 239748 1362640    0    0     0     0  192  421  1  1 99  0  0

pidstat

查看某个进程的运行信息。

free

查看内存信息。

df

查看磁盘信息。

iostat

查看磁盘I/O信息。比如有时候MySQL在查表的时候,会占用大量磁盘I/O,体现在该指令的%util字段很大。对于死循环的程序,CPU占用固然很高,但是磁盘I/O不高。

ifstat

查看网络I/O信息,需要安装。

CPU占用过高原因定位

先用top找到CPU占用最高的进程,然后用ps -mp pid -o THREAD,tid,time,得到该进程里面占用最高的线程。这个线程是10进制的,将其转成16进制,然后用jstack pid | grep tid可以定位到具体哪一行导致了占用过高。

JVM性能调优和监控工具

jps

Java版的ps -ef查看所有JVM进程。

jstack

查看JVM中运行线程的状态,比较重要。可以定位CPU占用过高位置,定位死锁位置。

jinfo/jstat

jinfo查看JVM的运行环境参数,比如默认的JVM参数等。jstat统计信息监视工具。

jmap

JVM内存映像工具。

你可能感兴趣的:(jvm,linux)