linux下JVM调优指令

1通top查看,占用内存情况

1、用命令top查看java进程的内存和cpu占用情况。对应的pid
linux下JVM调优指令
2.查看该top -Hp pid下线程对应的系统占用情况。top -Hp 14372
linux下JVM调优指令
线程 14386占用了cpu

jstack pid |grep tid -A 30 查看该线程堆栈信息

将需要的线程ID转换为16进制格式:printf “%x\n” 14386
linux下JVM调优指令
jstack 14372 |grep 3832 -A 30
linux下JVM调优指令
3、jmap -histo pid查询指定java进程的所有对象使用内存情况。

4、ps -mp pid -o THREAD,tid,time 查询所有线程列表

查看tcp连接数 netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
linux下JVM调优指令
如果服务器保持了大量CLOSE_WAIT状态,简单来说CLOSE_WAIT数目过大是由于被动关闭连接处理不当导致的

大量TIME_WAIT可以调整可以增加端口数,cat /proc/sys/net/ipv4/ip_local_port_range
ostat -d -k 2查看硬盘IO情况
linux下JVM调优指令
GC调优,关键是查看GC的频率,新生代内存Eden和老年代Survivor之间寻找一个平衡

关键时老年代,不能太大,太大full gc会导致系统停顿时间长,如果一定要大可以考虑单例转多例