跳至主要內容

11.java编程实践

引领潮流大约 1 分钟java并发编程艺术juc

场景

  1. 生产者和消费者 阻塞队列是给生产者和消费者解耦的

  2. 多生产者和多消费者场景

  3. 线程池与生产消费者模式

线上问题定位

top 查看每个进程的情况

top 1 查看每个CPU的性能数据。

top -H 看每个线程的性能信息

第一种情况,某个线程CPU利用率一直100%,则说明是这个线程有可能有死循环,那么 请记住这个PID。

第二种情况,某个线程一直在TOP 10的位置,这说明这个线程可能有性能问题。

第三种情况,CPU利用率高的几个线程在不停变化,说明并不是由某一个线程导致CPU 偏高。 如果是第一种情况,也有可能是GC造成,可以用jstat命令看一下GC情况

sudo /opt/java/bin/jstat -gcutil 31177 1000 5

sudo -u admin /opt/taobao/java/bin/jstack 31177 > /home/tengfei.fangtf/dump17

性能测试

当前有多少台机器在压测服务器 netstat -nat | grep 12200 –c

数据库连接 netstat -nat | grep 3306 –c

ps命令查看下线程数 ps -eLf | grep java -c

慢的SQL grep Y /home/admin/logs/xxx/monitor/dal-rw-monitor.log |awk -F',' '{print $7$5}' | sort -nr|head -20

查看网络流量。 cat /proc/net/dev

查看系统平均负载。 cat /proc/loadavg

查看系统内存情况。 cat /proc/meminfo

查看CPU的利用率。 cat /proc/stat

git地址

https://github.com/yinlingchaoliu/juc