Java性能调优思路
2011-05-15 13:39
148 查看
性能调优
1 被动的性能调优 自下而上: 计算机及网络(cpu,内存,文件,I/O,网络,), 操作系统(线程,内存,I/O,网络),
应用服务器和数据库(cpu,内存,文件,I/O,网络,),应用程序
在设计,开发,测试阶段进行。
2 主动的性能调优 自上而下:应用程序,应用服务器和数据库(cpu,内存,文件,I/O,网络,),
操作系统(线程,内存,I/O,网络),计算机及网络(cpu,内存,文件,I/O,网络,)
在测试结束,时间紧迫不能修改代码时,实施,上线,升级时。
被动的性能调优步骤:
(1)计算机及网络,操作系统,
Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。
1) cpu的监控: Unix/Linux 用 top , vmstat , mpstat 命令查看cpu情况,Windows 任务管理器产看,sar(系统活动报告)
2) 进程资源的监控: top, prstat
3) 内存的监控:vmstat ,free
4) 磁盘的I/O的监控: iostat
5) 网络的I/O的监控: netstat, netstat -ps tcp
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}';
"可以用工具iptraf工具查看网络流量: $ iptraf -g
"针对某个Interface的网络流量可以通过比较两个时间网络接口的RX(Rx Packets是接收数据包)和TX(Tx Packets是发送数据包)数据来获得
$ date; ifconfig eth1
$ date; ifconfig eth1
6) 系统锁的监控: plockstat
解决方法,增加硬件,修改操作系统参数
(2)Java虚拟机层次的监控 jps
1) jstat -gcutil 571 1000
jstat -gcutil 21308 250 10
2) 线程互锁的监控: socket, heap, dump, kill -3 <pid>, ps -ef|grep java
3) 内存泄漏的监控: jmap , jhat ,
jmap -heap 953,jmap -histo 1123
请尝试用后面提到 的-XX:+ShowMessageBoxOnError让Java进程在退 出前先暂停,然后手动从外部执行需要的命令
16. 事前准备• 若要让JVM在检测到crash后不立即退出, 而是提示打开调试器 – 可使用 -XX:+ShowMessageBoxOnError – 主要用于crash时的现场调试 – 通常不需要启用 – 遇到很诡异的bug时可以靠该参数获取更直接 的现场信息
解决方法: 修改参数
(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 (Head Dump)
kill -3 pid (Java Core/Thread Dump)
3 大缓存问题
4 外部命令问题 mpstat
5 文件操作问题
1 被动的性能调优 自下而上: 计算机及网络(cpu,内存,文件,I/O,网络,), 操作系统(线程,内存,I/O,网络),
应用服务器和数据库(cpu,内存,文件,I/O,网络,),应用程序
在设计,开发,测试阶段进行。
2 主动的性能调优 自上而下:应用程序,应用服务器和数据库(cpu,内存,文件,I/O,网络,),
操作系统(线程,内存,I/O,网络),计算机及网络(cpu,内存,文件,I/O,网络,)
在测试结束,时间紧迫不能修改代码时,实施,上线,升级时。
被动的性能调优步骤:
(1)计算机及网络,操作系统,
Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。
1) cpu的监控: Unix/Linux 用 top , vmstat , mpstat 命令查看cpu情况,Windows 任务管理器产看,sar(系统活动报告)
2) 进程资源的监控: top, prstat
3) 内存的监控:vmstat ,free
4) 磁盘的I/O的监控: iostat
5) 网络的I/O的监控: netstat, netstat -ps tcp
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}';
"可以用工具iptraf工具查看网络流量: $ iptraf -g
"针对某个Interface的网络流量可以通过比较两个时间网络接口的RX(Rx Packets是接收数据包)和TX(Tx Packets是发送数据包)数据来获得
$ date; ifconfig eth1
$ date; ifconfig eth1
6) 系统锁的监控: plockstat
解决方法,增加硬件,修改操作系统参数
(2)Java虚拟机层次的监控 jps
1) jstat -gcutil 571 1000
jstat -gcutil 21308 250 10
2) 线程互锁的监控: socket, heap, dump, kill -3 <pid>, ps -ef|grep java
3) 内存泄漏的监控: jmap , jhat ,
jmap -heap 953,jmap -histo 1123
请尝试用后面提到 的-XX:+ShowMessageBoxOnError让Java进程在退 出前先暂停,然后手动从外部执行需要的命令
16. 事前准备• 若要让JVM在检测到crash后不立即退出, 而是提示打开调试器 – 可使用 -XX:+ShowMessageBoxOnError – 主要用于crash时的现场调试 – 通常不需要启用 – 遇到很诡异的bug时可以靠该参数获取更直接 的现场信息
解决方法: 修改参数
(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 (Head Dump)
kill -3 pid (Java Core/Thread Dump)
3 大缓存问题
4 外部命令问题 mpstat
5 文件操作问题
相关文章推荐
- Java性能调优思路
- Java性能调优思路
- java多线程程序性能调优 优化过程
- Java应用Tomcat执行过程之性能调优
- java中简单的性能调优技巧
- Java性能调优笔记
- Java性能调优之:idea变慢解决
- Java项目性能监控和调优工具-Javamelody
- Java 性能调优指南之 Java 集合概览
- java 性能调优
- Java性能调优以及jvm相关知识
- Java性能调优
- Java性能调优技巧
- 系统性能调优(5)----Java循环与字符串代码优化
- [转]HP-UX中的Java应用性能调优概述(下)
- java程序性能优化学习总结--第一章java性能调优概述
- Java 程序性能优化《第一章》Java性能调优概述 1.4小结
- 性能调优思路
- Java 代码性能调优“三十六”策