0%

性能调优

性能调优

性能测试

负载测试

应用系统接收正常情况的访问量,一开始访问量低,然后逐步增加,直至应用系统达到一个较高的负载。通过负载测试,可以知道应用系统随着并发用户数的增加,其响应时间的变化情况,从而确定系统的伸缩性以及在访问高峰系统响应时间是否仍然合理

压力测试

系统接收异常情况的用户访问量,正常访问量的数倍或者数十倍,并持续增加负载,直至系统崩溃,通过压力测试,可以获知系统崩溃的临界负载以及在极端条件下才会出现的系统BUG

持续运行时间测试

需要让应用系统不间断运行数天甚至更久,而且模拟正常用户访问系统,可以发现那些负载测试中不易发现的BUG,内存泄漏等问题。

性能测试工具

ApacheBench、Apache JMeter、Grinder、Pylot、WCAT、Web Polygraph

查看网络使用 : nload、bmon、slurm

查看每个套接字iftop、iptraf、tcptrack、pktstat、newwatch

查看内存/CPU top命令

  • -h 输出当前版本信息
  • -c 切换显示命令名称和完整命令行
  • -d 指定每两次屏幕信息刷新之间的时间间隔
  • -o 指定显示项目的顺序
  • -p 通过指定监控进程ID来仅仅监控某个进程的状态
  • -u 指定显示用户进程

JVM运行状况 jstat

jmap用于打印进程的堆内存详情、产生对象数量以及内存使用情况,可以用于检查内存泄漏、对象不合理创建及销毁的问题

对于jmap -dump生成的hprof文件,可以使用jhat命令查看,jhat [options] head-dump-file 在浏览器中输入localhost:7000查看结果 也可以使用mat工具来分析dump文件

还可以使用jstack在代码级别帮助我们定位问题,可以输出指定进程或远程主机的栈信息

两个可视化工具,JConsole(使用jconsole命令)和VisualVM(使用jvisualvm命令)