本篇继续上篇内容
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=truemore 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 -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
netstat -s
netstat -nat |awk '{print $6}'
top命令
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
linux分析jvm cpu占用高问题
查Jvm进程各线程cpu占用情况
将耗cpu的pid转换为16进制
查找 nid值对应的线程
time-wait解决
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
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
fs.file-max = 655360
net.core.rmem_default = 262144
net.core.rmem_max = 3492800
net.core.wmem_default = 262144
net.core.wmem_max = 3492800
net.ipv4.tcp_max_tw_buckets = 5000
net.core.netdev_max_backlog = 32768
net.ipv4.tcp_wmem = 8192 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
net.ipv4.tcp_mem = 786432 1048576 1572864
然后执行 /sbin/sysctl -p 让参数生效。
net.ipv4.tcp_mem
内核分配给TCP连接的内存,单位是Page,1 Page = 4096 Bytes,可用命令查看:
#getconf PAGESIZE
4096
net.ipv4.tcp_mem = 196608 262144 393216
第一个数字表示,当 tcp 使用的 page 少于 196608 时,kernel 不对其进行任何的干预
第二个数字表示,当 tcp 使用了超过 262144 的 pages 时,kernel 会进入 “memory pressure” 压力模式
第三个数字表示,当 tcp 使用的 pages 超过 393216 时(相当于1.6GB内存),就会报:Out of socket memory
以上数值适用于4GB内存机器,对于8GB内存机器,建议用以下参数:
net.ipv4.tcp_mem = 524288 699050 1048576 (TCP连接最多约使用4GB内存)
net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem
为每个TCP连接分配的读、写缓冲区内存大小,单位是Byte
net.ipv4.tcp_rmem = 4096 8192 4194304
net.ipv4.tcp_wmem = 4096 8192 4194304
第一个数字表示,为TCP连接分配的最小内存
第二个数字表示,为TCP连接分配的缺省内存
第三个数字表示,为TCP连接分配的最大内存
一般按照缺省值分配,上面的例子就是读写均为8KB,共16KB
1.6GB TCP内存能容纳的连接数,约为 1600MB/16KB = 100K = 10万
4.0GB TCP内存能容纳的连接数,约为 4000MB/16KB = 250K = 25万
net.ipv4.tcp_max_orphans
最大孤儿套接字(orphan sockets)数,单位是个
net.ipv4.tcp_max_orphans = 65536
表示最多65536个
注意:当cat /proc/net/sockstat看到的orphans数量达到net.ipv4.tcp_max_orphans的约一半时,就会报:Out of socket memory
linux网络传输速度测试方法
tar zxvf iperf-2.0.5.tar.gz
./configure --prefix=/home/csb
A端主机
iperf -c 192.168.161.129 -i 1 -w 1M
iperf -s -i 1 -w 1M
linux jvm监控与分析
分析内存
分析cpu
1.使用visuamM 采集cpu快照垃圾回收分析
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