推荐
阿里系java技术图书.经典读书,值得一读.
JD购买地址:分布式Java应用:基础与实践
选读章节如下:
- 第三章 深入理解JVM
- 第四章 分布式Java应用与SunJdk 类库
- 第五章 性能调优
第三章 深入理解JVM
点击标题有惊喜...第三章的读书笔记.大大的一张图.
##### 这章节读完是比较满足的.对jvm的整体理解加深不少.之前读过一本<<深入理解JVM虚拟机-修订版>> 略读一次,深读了大概1/3进度比较慢被搁置了.读 <<深入理解JVM虚拟机>>,时似懂非懂,感觉一些基础的东西并未展开来讲,网上查了半天也不成系统,读了第三章感觉这些无法越过的障碍貌似又豁然开朗了,补充了jvm这块知识的空白,详细而易于理解,了解jvm必读.
第四章 分布式Java应用与SunJdk 类库
第五章 性能调优
cpu-消耗分析
上下文切换(文件IO/网络IO/锁等待或线程Sleep 当前线程会进入阻塞或休眠)
运行队列(每个cpu有个运行队列 8线程 /4核心 = 2( load))
利用率
top `1 切换线程查看 us -usr(us高 jstack 查看 dump文件 查看线程是否处于Runnable) sy-system(sy 高 线程切换高 查 java 锁 IO等待 jstack -l dump) id-idle `
pidstat -p pid -t 1 1 `详细查看 pid(p process) 下 各 tid(task)的详细情况`
vmstat 1 1
文件io-消耗分析
pidstat -d -t -p pid 1 100 `详细查看 pid(p process) 下 各 tid(task)的详细情况`
iostat -x xvda 3 5 (r/s 读请求数/每秒 w/s 写请求数/每秒 wait 平均每次IO的等待时间 毫秒) 结合 pidstat 使用
网络IO 消耗分析
网卡中断是否均衡分配到了各个cpu cat /proc/interrupts 查看
java 一般不会有网络IO 问题 因为 JVM 堆内存大小有限(Java 的网络通信 通常要讲对象序列化为字节流 进行 发送或读取)
内存消耗分析
vmstat (swapd 过高 一般是由于物理内存不足 swap io 也值得关注 jvm 内存设置的不是过大一般不会操作到swap区域)
sar (sar-r) 可以查询历史状态
总结
具体情况具体分析