性能分析调优
术语:
高可用性:通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
高可靠性:产品在规定的条件下、在规定的时间内完成规定的功能的能力。
可扩展:易于扩大规模,尤其是具有良好的水平扩展能力,处理能力与机器数量呈线性关系。
一、性能分析方法:
1)自底向上:通过监控硬件及操作系统性能指标(CPU、内存、磁盘、网络等硬件资源的性能指标)来分析性能问题(配置、程序等问题)。
2)自顶向下:通过生成负载来观察被测试系统的系统性能,比如响应时间、吞吐量;
监控的关键点:生成负载、监控性能指标。
对于没有经验的,可以用自底向上;对于有经验的,可以自顶向下。
二、单机性能分析与调优
常见的系统架构分为:用户、Web&App、DB,所以问题一般出在web服务、App服务或者DB。Web服务、App服务一般运行在中间件上,中间件和DB一般运行在操作系统上,操作系统管理计算机硬件设备(CPU、内存、磁盘、网卡等设备),这些就是我们分析的对象。
1,性能分析流程
J2EE应用架构,分为Web层(请求接入、负载均衡、页面渲染等)、应用层(业务逻辑实现)、持久化层(数据记录)。

Client:客户浏览器,比如IE、Chrome等访问Web页面。
Load Machine:是生成负载的机器,即我们的压测机器来模拟用户负载。
Web Server:提供Web服务的服务器,即我们访问的Web页面由此服务器提供服务;一般部署在Nginx、Apache上。
Middleware:中间件,比如Tomcat、Jboss、Weblogic等。
OS:操作系统,Windows或者linux。
System Resource:系统资源,比如CPU、内存、磁盘、网络等。
App Server:应用服务器,实现业务逻辑,比如生成订单,生成统计报表等。
DB:数据库服务器,比如Oracle、Mysql、SqlServer等。
1)
RT:响应时间,一笔业务的完成时间。
TPS:每秒完成的事务数。
CPU:CPU性能指标,比如CPU利用率、CPU负载。
Mem:内存性能指标,比如可用物理内存、虚拟内存使用率。
Disks:Disk性能指标,比如Disk Time、IO等待。
Network:网络指标,如带宽使用率,任务队列长度。
2)
TCP Connections:指TCP连接数,可以用netstat命令统计得到。
Thread Pool:中间件建立的线程池,监控线程状态。
JVM:JVM性能指标,比如GC情况,Heap使用情况。
Load Average:CPU负载队列长度。
3)
DB Connections:中间件与数据库之间建立的连接数及连接状态。
4)
DB Time:消耗在数据库操作上的CPU时间。
TOP SQL:按内存占用由多到少排序SQL,按CPU占用由多到少排序SQL。
PGA、SGA:PGA\SGA内存使用情况。
三、系统性能关注点
1,System Resources(系统资源):
1)CPU利用率过高;
2)内存吃紧;
3)磁盘繁忙;
4)网络流量过大;
2,操作系统:1)系统负载;2)系统连接数的控制;3)缓存。
3,DB:慢查询、大事务、死锁、DB Time高、磁盘IO等待时间、热点数据,置入内存。
4,中间件:Tomcat、Jboss、WebLogic、WebSphere、Jetty。
JVM:中间件运行在JVM上,需要监控JVM堆内存使用情况。包括GC频率、线程状态等。
Thread pool:中间件在接收用户请求时为了节省建立连接、销毁连接的资源消耗,设计建立线程池,需要监控其使用情况,一般当超过一定的使用率可以考虑加大连接池数量。netstat
DB Connections pool(数据库连接池):netstat命令。
5,App Server(应用程序):SSH(Spring Struts Hibernate)架构MVC(Model View Controller),展现层V负责展现内容,控制层C负责请求接收,前台逻辑跳转;M层实现业务逻辑,返回数据;数据层负责与数据库打交道。业务逻辑与数据访问归到应用程序,展现层归到Web服务层。
6,Web Server(Web 服务)
四、程序优化
五、配置优化
六、数据库连接池优化
七、线程优化:线程池优化、CPU处理能力、内存容量、系统线程数限制
八、DB优化