linux java 性能分析

IO 处理的 五种模型

  • 阻塞IO
  • 非阻塞IO
  • IO 多路复用
  • 信号u启动
  • 异步 IO

vmstat

内容交换 cs  contentswitch

vmstat -s -S M  
该可以查看包含内存每个项目的报告,通过-S M或-S k可以指定查看的单位,默认为kb。结合watch命令就可以看到动态变化的报告了。

lmbench3

jstack 统计线程状态信息

ubuntu@VM-0-4-ubuntu:~$ jps -l
26432 sun.tools.jps.Jps
17538 yew-0.0.1-SNAPSHOT.jar
10493 org.apache.catalina.startup.Bootstrap
ubuntu@VM-0-4-ubuntu:~$ jstack 10493 >/tmp/dump1
ubuntu@VM-0-4-ubuntu:~$ grep java.lang.Thread.State /tmp/dump1 |awk '{print $2$3$4$5}'|sort |uniq -c
     13 RUNNABLE
      3 TIMED_WAITING(onobjectmonitor)
      5 TIMED_WAITING(parking)
      3 TIMED_WAITING(sleeping)
      3 WAITING(onobjectmonitor)
     14 WAITING(parking)
通过修改 tomcat  jboss maxThreads 减少 WAITING(onobjectmonitor)

查看线程信息

top -Hp  pid
sudo apt install -y sysstat
mpstat -P ALL  3
sar -P ALL  3

监控java线程数:

ps -eLf | grep java | wc -l

监控网络客户连接数:

netstat -n | grep tcp | grep 侦听端口 | wc -l

tcp 监听

tcpdump -nn -i wlp4s0 port 80
exec  9<> /dev/tcp/www.baidu.com/80
echo -e "GET / HTTP/1.0\n" >& 9
cat <& 9