• 1. 如何进行性能调优Seling Chen更多性能测试资料尽在ROAD软件测试论坛 http://www.testroad.net/bbs/
  • 2. 内容介绍 旨在与大家交流性能测试,分享知识。 内容主要包括性能分析与调优思路,通过对典型系统的分析来讲解调优方法。
  • 3. Contents性能环节1性能优化原则2系统特征3性能优化4
  • 4. 系统性能瓶颈CPUMemDiskCPU进程等待内存增加虚拟内存使用磁盘IO增加 CPU开销增加 (进程切换、缺页处理)
  • 5. 系统性能瓶颈系统应用硬件资源操作系统服务器软件系统架构应用程序
  • 6. System ResourceCPU:计算存储:持久化内存:缓存带宽:信息通道系统性能瓶颈1.通过缓存来提高读写效率 2.调整存储 3.条带化
  • 7. Contents性能环节1性能优化原则2系统特征3性能优化4
  • 8. 系统优化原则架构、业务及程序的优化最有效 尽量减少资源的占用 预留扩展空间,能够应付突发状况 MVC资源均衡业务优化配置优化
  • 9. Contents性能环节1性能优化原则2系统特征3性能优化4
  • 10. 系统特征门户网站企业生产应用科学计算流媒体应用文件服务政企办公静动动&静1.进程多 2.消耗内存多 3.磁盘IO频繁1.网络带宽瓶颈 2.缓存多1.DB压力大 2.存储压力大 3.内存压力大 4.CPU压力大B/S
  • 11. Contents性能环节1性能优化原则2系统特征3性能优化4
  • 12. 企业应用特点高高并发高可用性高安全级别高时效 1.数据量大 2.运算复杂 3.安全级别高 4.系统7X24高负荷 5.CPU、内存、存储压力大 6.业务运算在DB层实现 (减少信息传输、DB高效运算) 7.业务建模作用突显 8.DB性能突显
  • 13. 典型架构
  • 14. System ResourceOSAPP ServerAPPDB性能表现系统资源: 服务器、客户机CPU,内存,硬盘等配置操作系统: 操作系统资源分配应用服务: 中间件、中间件配置应用程序: 程序性能数据库: 参数配置
  • 15. 性能瓶颈
  • 16. 性能分析方向 硬盘 虚拟内存(交换分区swap) 内存 CPU缓存 CPU执行队列 执行数据慢快分析方向
  • 17. 存储体系硬 盘 Bi(read) Bo(write)虚 拟 内存 Swap内 存 Free Cache Si(=0正常)SO(=0正常)Bi(接近于0性能良好)Bo(接近于0性能良好)BiBo
  • 18. DB优化思路——减少IOAPP层:APP SQL请求DB Coding层: 解析并优化SQL、管理锁、 并发等Mem层:高速缓存、共享内 存池、PGA(排序 散列)、 SGA(缓存)磁盘:物理读写 表、索引、读写临时工作区 、重做日志等这一层的优化代价最高、 而且随着业务量的增加 变得失效治标不治本ASM 自动存储管理 也不是万能,有时需 要人工设置代码优化成本最低 解决本质问题减少请求能够 显著提高性能调优思路
  • 19. DB优化思路APP层:APP SQL请求DB Coding层: 解析并优化SQL、管理锁、 并发等Mem层:高速缓存、共享内 存池、PGA(排序 散列)、 SGA(缓存)磁盘:物理读写 表、索引、读写临时工作区 、重做日志等调优思路减少SQL请求、提高运算效率 优化APP代码 优化物理结构(分区、索引、冗余) SQL请求尽可能少、返回最小化 查询器优化 避免过载 单条SQL优化 并行SQL提高并发执行能力 减少资源争用(锁、闩锁、缓存)缓存,缓冲IO请求降低IO 优化内存、减少物理IO访问 SGA(缓存高频访问数据) PGA(排序、散列) AMM(自动内存管理) 人工干预提高IO带宽 条带化 SDD等新的专用文件存储产品
  • 20. Web|APP优化页面简化 表单压缩 局部刷新 仅取所需 减少不必要请求 逻辑清淅 谨慎继承 程序算法优化(二分查找 哈希表) 批处理 延迟加载 防止内存泄露 减少大对象引用 防止争用死锁 。。。。。
  • 21. Tomcat连接数Tomcat连接数 D:\tomcat7\conf\ server.xml maxThreads="210" 表示最多同时处理210个连接 minSpareThreads="25" 表示即使没有人使用也开这么多空线程等待 maxSpareThreads=“75” 表示最多可以有75个空线程处在等待状态 acceptCount=“100”线程都被占用后最多可以有100个线程处于在等待队列中,多的将不响应
  • 22. Tomcat连接数设置管理员帐号与密码 /Tomcat/conf/tomcat-users.xml 中开放 启动后,访问: http://URL:port/manager/status
  • 23. DB 连接数数据库连接数占满,事务失败 使用连接池,配置适当的连接数 评估用户量,设置连接数 容器线程数占满 操作系统支持的线程数 (Win Server 2000,Linux 1000) 排队(12306) 连接池配置 池子大小 回收周期
  • 24. DB 连接数数据库连接数查询与修改 --查询数据库允许的最大连接数: select value from v$parameter where name = 'processes'; --修改数据库允许的最大连接数: alter system set processes = 300 scope = spfile; select count(1) from v$session;--查询当前连接数 c3p0连接池配置
  • 25. Jboss Jndipersistence.xmljndi:marine-ds
  • 26. JVM监控:Jconsole 监控图点击:
  • 27. VM Telemetry Views-GCGC后内存占用量下不来就大多有问题,此图反映的系统运行就比较平稳,GC后基本都是在同一水平线上
  • 28. VM Telemetry Views-GC此图反映的系统运行平稳,GC后可用内存都回到同一水平
  • 29. 分析内存溢出先开始录制Memory,标记当前状态,运行后增长的为 红色部分,如果请求停止后(GC一次),红色的不回 收,则很可能是内存泄露,还要接合VM Telemetry Views 一起来看
  • 30. 分析内存溢出
  • 31. 分析内存溢出123,可以找到是什么方法调用了此实例
  • 32. 内存溢出问题内存溢出 对象实例化后没有回收(常驻内存),一直占用内存,导致JVM可用内存变小,最后系统崩溃。 java.lang.OutOfMemoryError: Java heap space 堆溢出(年老代占满) java.lang.OutOfMemoryError: Java Permanent space 永久区溢出 java.lang.StackOverflowError堆栈溢出,递归没返回,或者循环调用造成 java.lang.OutOfMemoryError: unable to create new native thread 这个异常是由于操作系统没有足够的资源来产生这个线程造成的,可以通过修改 -Xss来减少分配给单个线程的空间,也可以增加系统总共内生产的线程数。 设置(JOBSS): Set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4 一般的要将-Xms和-Xmx选项设置为相同,一次性分配 不能无限制的分配,即使你的内存足够大,Heap Size空间太大,GC时耗时会更长,影响系统使用,适当够用就行 MaxPermSize 默认为64M,推荐PermSize与MaxPermSize设置同等大,减小开销 D:\tomcat7\bin\catalina.bat 在第一行加入 set JAVA_OPTS=-XX:PermSize=128M -XX:MaxPermSize=128m -Xms512m -Xmx512m
  • 33. OutOfMemoryErrorpackage cn.seling.www.outMem.OutOfMemoryError Exception in thread "Main Thread" java.lang.OutOfMemoryError: allocLargeObjectOrArray: [Ljava/lang/Object;, size 347827296 at java.util.Arrays.copyOf(Arrays.java:2760) at java.util.Arrays.copyOf(Arrays.java:2734) at java.util.ArrayList.ensureCapacity(ArrayList.java:167) at java.util.ArrayList.add(ArrayList.java:351) at cn.seling.www.outMem.OutOfMemoryError.main(OutOfMemoryError.java:15)
  • 34. 内存溢出问题
  • 35. Thank You !The End更多性能测试资料尽在ROAD软件测试论坛 http://www.testroad.net/bbs/