1,问题表像
外网链接特别慢,甚至卡顿,分析连接数
2,分析问题
netstat -an|grep 8080
命令分析:查看当前网络链接数量,筛选出重要端口访问量
如果连接数较多,说明有大量占用情况,可查看nginx句柄数 ,ulimit -a 如果句柄数据过少,可适当添加,要永久改到,不要临时改动,重启就会失效。
如果连接数据很少,但是还是很慢,需要查看系统内存使用情况
top
分析占CPU最多的进程。
ps p 15221 -L -o pcpu,pmem,pid,tid,time,tname,cmd
%CPU是线程占CPU使用量,MEM指内存,PID进程ID,TID线程ID,后面再根据线程TID,找到具体的JAVA线程
15259换算成16进制到文档中寻找对应线程3b9b
打线程的堆栈信息
jstack pid > stackinfo.txt
在文档中搜索关键字3b9b
是个定时任务执行,占用CPU,现在处理等待
2,线程状态
Jstack的输出中,Java线程状态主要是以下几种:
RUNNABLE 线程运行中或I/O等待
BLOCKED 线程在等待monitor锁(synchronized关键字)
TIMED_WAITING 线程在等待唤醒,但设置了时限
WAITING 线程在无限等待唤醒