Java性能调优思路
性能调优
1 被动的性能调优 自下而上: 计算机及网络(cpu,内存,文件,I/O,网络,), 操作系统(线程,内存,I/O,网络),
应用服务器和数据库(cpu,内存,文件,I/O,网络,),应用程序
在设计,开发,测试阶段进行。
2 主动的性能调优 自上而下:应用程序,应用服务器和数据库(cpu,内存,文件,I/O,网络,),
操作系统(线程,内存,I/O,网络),计算机及网络(cpu,内存,文件,I/O,网络,)
在测试结束,时间紧迫不能修改代码时,实施,上线,升级时。
被动的性能调优步骤:
(1)计算机及网络,操作系统
1) cpu的监控: Unix/Linux 用 top , vmstat , mpstat 命令查看cpu情况,Windows 任务管理器产看
2) 进程资源的监控: top, prstat
3) 内存的监控:vmstat
4) 磁盘的I/O的监控: iostat
5) 网络的I/O的监控: netstat, netstat -ps tcp
6) 系统锁的监控: plockstat
解决方法,增加硬件,修改操作系统参数
(2)Java虚拟机层次的监控 jps
1) jstat -gcutil 5711000
2) 线程互锁的监控: socket, heap, dump, kill -3 <pid>, ps -ef|grep java
3) 内存泄漏的监控: jmap , jhat , jmap -histo 1123
解决方法: 修改参数
(3)应用服务器,数据库层次的监控
1)EJB Container
2)Web Container
3)HTTP Server
4)JDBC Connection Pool
5)JMS Connection Pool
6)ORM Connection Pool
7)高速缓存命中率问题
解决方法:调整参数
(4)应用代码的跟踪
JVMTI
NetBeans Profiler
profiler.netbeans.org
解决方法:代码分析工具,找到瓶颈,修改代码。
被动性能调优的案例分析:
1 内存泄漏问题 : jstat
2 DB连接池: jmap
kill -3 pid, dump
3 大缓存问题
4 外部命令问题 mpstat
5 文件操作问题

浙公网安备 33010602011771号