系统优化总结
定位性能瓶颈
可以从以下几个方面衡量系统的性能:
- 应用层面
- 系统层面
- JVM层面
应用层面
- QPS
- 响应时间
系统层面
a.系统层面指标有CPU、内存、磁盘、网络等
有一个强大的工具,可以实时监控cpu、磁盘、网络、io、内存等使用情况。
dstat -lcdngym
yum install -y dstat
或者top -c 命令
b. 磁盘
df -h
看磁盘使用情况
du -sh //看当前文件夹下所有文件大小
c. 网络
netstat -nt
如果存在大量的SYN-SENT的连接,则需要看下防火墙的配置。
JVM层面
1 获取线程堆栈的步骤
a 找到pid编号
ps -ef|grep java
b. jstack <pid> > jstack.txt
2 jstack分析cpu占用过高
a 找到对应的java pid
ps -ef|grep java
b 找到java进程中最消耗CPU的线程
top -H -p <pid>
c 将找出的线程id 转为16进制
printf "0x%x" xxxx
d 根据16进制的id从stacklog中找到堆栈信息
ps: jstack只是某一个时间的堆栈信息,因此一定要在出现问题的时候收集。
3 jmap 分析内存泄漏
在服务器内存溢出时拿到当时的堆栈信息,并且使用MemoryAnalyzer进行分析
jmap -dump:format=b,file=fileName.hprof pid
拿到生成的二进制dump文件,丢进MemoryAnalyzer工具去分析