本篇继续上篇内容
iostat
rxpck/s:每秒钟接收的数据包
txpck/s:每秒钟发送的数据包
rxbyt/s:每秒钟接收的字节数
txbyt/s:每秒钟发送的字节数
rxcmp/s:每秒钟接收的压缩数据包
txcmp/s:每秒钟发送的压缩数据包
rxmcst/s:每秒钟接收的多播数据包
jstatd 远程调试
jstatd -J-Djava.security.policy=pstat.policy -J-Djava.rmi.server.logCalls=true
more pstat.policy
grant codebase "file:/home/csb/jdk1.7.0_25/lib/tools.jar" {
permission java.security.AllPermission;
};
查文件句柄
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
查线程树
pstack pid
其它命令
vmstat
pidstat -d -t -p 7890
sar -n ALL 1 2
sar -n DEV 2 10
netstat -nat |awk '{print $6}'|sort|uniq -c --查总共打开的tcp连接
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
netstat -s
netstat -nat |awk '{print $6}'
top命令
top - 20:31:44 up 106 days, 17:18, 2 users, load average: 0.18, 0.22, 0.22
Tasks: 142 total, 1 running, 141 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8199588k total, 7890008k used, 309580k free, 564108k buffers
Swap: 16777212k total, 28k used, 16777184k free, 5380216k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5100 root 20 0 153m 8136 4176 S 0.3 0.1 19:50.44 snmpd
1 root 20 0 10416 696 584 S 0.0 0.0 1:30.83 init
Tasks: 142 total, 1 running, 141 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8199588k total, 7890008k used, 309580k free, 564108k buffers
Swap: 16777212k total, 28k used, 16777184k free, 5380216k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5100 root 20 0 153m 8136 4176 S 0.3 0.1 19:50.44 snmpd
1 root 20 0 10416 696 584 S 0.0 0.0 1:30.83 init
sy:系统调用,如果高,针对Java应用,一般表现为线程切换的多。
wa :io 等待时间
us :cpu时间
linux分析jvm cpu占用高问题
查Jvm进程各线程cpu占用情况
top -Hp 26126 -d 1 -n 1
ps mp 56014-o THREAD,tid
将耗cpu的pid转换为16进制
printf "%x\n" pid pid转换为16进制
查找 nid值对应的线程
jstack -l pid |grep Ox111
time-wait解决
netstat -ae|grep mysql
vi /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行 /sbin/sysctl -p 让参数生效。
vi /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行 /sbin/sysctl -p 让参数生效。
linux网络传输速度测试方法
iperf [-h|--help] [-v|--version]
tar zxvf iperf-2.0.5.tar.gz
./configure --prefix=/home/csb
A端主机
iperf -c 192.168.161.129 -i 1 -w 1M
tar zxvf iperf-2.0.5.tar.gz
./configure --prefix=/home/csb
A端主机
iperf -c 192.168.161.129 -i 1 -w 1M
B端主机
iperf -s -i 1 -w 1M
iperf -s -i 1 -w 1M
linux jvm监控与分析
上图看到jvm占用60%以上cpu,堆内存使用超过1G。
分析内存
1.使用
jmap -histo [pid] >test.dump
2.使用ibm ha.jar打开dump.
分析cpu
1.使用visuamM 采集cpu快照
2.分析出占cpu的方法
垃圾回收分析
jstat -gcutil [pid] 2500 70
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
0.00 55.61 75.70 0.02 ? 1 0.010 0 0.000 0.010
s0: 幸存代0
s1:幸存代1
E:eden代
O:老生代
YGC:新生代gc次数
ygct :新生代gc花的时间
FGC:full全gc时间
FGCT :全gc时间
GCT:总gc时间
google-perftools
对 CPU 时间片、内存等系统资源的分配和使用进行分析。没有做过研究