Java:分布式Java应用基础与实践

推荐

阿里系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) 可以查询历史状态

总结

具体情况具体分析
文章目录
  1. 1. 推荐
  2. 2. 选读章节如下:
  3. 3. 第三章 深入理解JVM
  4. 4. 第四章 分布式Java应用与SunJdk 类库
  5. 5. 第五章 性能调优
    1. 5.0.0.0.1. cpu-消耗分析
    2. 5.0.0.0.2. 文件io-消耗分析
    3. 5.0.0.0.3. 网络IO 消耗分析
    4. 5.0.0.0.4. 内存消耗分析
  • 5.1. 总结