这章是本书的最后一个章节,主要讲述了一个生产者消费者模型和一个线上问题定位的方法
生产者和消费者模型
- 开发过程中要多思考,是否可以使用模型解决问题
- 线程池也是一种生产者消费者模型
线上问题定位
top命令
- 初识top命令
- -COMMAND:我们要关注java的
- %CPU:是所有CPU核的利用百分比相加的
- 输入top命令->按 “1”
- 会显示所有CPU的核数
- 输入top命令->按“H”
问题定位
- 某个线程的CPU一直100%
- 可能的原因
- 某个程序中有死循环
- 可能是GC造成
- 定位方式
- 记住PID
- jstat命令查看一下GC情况(是不是老年代满了,引发FullGC)
- 可能的原因
3. 通过jstack命令将线程Dump下来,然后找到相应的线程号(printf “%x\n” PID转换)
性能检测
- 一个压缩小程序,部署在10台机器上,每个机器100线程
- 应用服务部署在一台服务器上
- 查看多少台机器连接到本机的 xxx端口
- 查看多少个Mysql数据库连接
- 查看网络流量
- 查看系统平均负载
- 查看系统内存情况
- 查看CPU利用率
- 统计线程数量
异步任务池
Java的线程池的缺陷:
- 任务丢入线程池,此时程序重启,会丢失任务
- 只能处理本机的任务
- 思路