调优原则与思路
本文主要进行高性能配置调优,即所有数据盘都是用固态硬盘(SSD)的场景。
调优原则
在性能优化时,需要遵循一定的原则,主要有以下几个方面:
- 对性能进行分析时,要多方面分析系统的资源瓶颈所在,如CPU利用率达到100%时,也可能是内存容量限制,导致CPU忙于处理内存调度。
- 一次只对一个性能指标参数进行调整。
- 分析工具本身运行可能会带来资源损耗,导致系统某方面的资源瓶颈情况更加严重,应避免或降低对应用程序的影响。
调优思路
调优分析思路如下:
- 很多情况下压测流量并没有完全进入到后端(服务端),在网络接入层(云化的架构,比如:SLB/WAF/高防IP,甚至是CDN/全站加速等)可能就会出现由于各种规格(带宽、最大连接数、新建连接数等)限制或者因为压测的某些特征符合CC和DDoS的行为而触发了防护策略导致压测结果达不到预期。
- 接着看关键指标是否满足要求,如果不满足,需要确定是哪个地方有问题,一般情况下,服务器端问题可能性比较大,也有可能是客户端问题(这种可能性非常小)。
- 对于服务器端问题,需要定位的是硬件相关指标,例如CPU,Memory,Disk IO,Network IO,如果是某个硬件指标有问题,需要深入的进行分析。
- 如果硬件指标都没有问题,需要查看中间件相关指标,例如:线程池、连接池、GC等,如果是这些指标问题,需要深入的分析。
- 如果中间件相关指标没问题,需要查看数据库相关指标,例如:慢查SQL,命中率,锁、参数设置。
- 如果以上指标都正常,应用程序的算法、缓冲、缓存、同步或异步可能有问题,需要具体深入的分析。
可能的瓶颈点如表1所示。
瓶颈点 |
说明 |
---|---|
硬件/规格 |
一般指的是CPU、内存、磁盘IO方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)。 |
中间件 |
一般指的是应用服务器、web服务器等应用软件,还包括数据库系统。例如:中间件weblogic平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。 |
应用程序 |
一般指的是开发人员开发出来的应用程序。例如,JVM参数不合理,容器配置不合理,慢SQL,数据库设计不合理,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够、无缓冲、无缓存、生产者和消费者不协调等),造成系统在大量用户方位时性能低下而造成的瓶颈。 |
操作系统 |
一般指的是Windows、UNIX、Linux等操作系统。例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。 |
网络设备 |
一般指的是防火墙、动态负载均衡器、交换机等设备。当前更多的云化服务架构使用的网络接入产品:包括但不限于SLB/WAF/高防IP/CDN/全站加速等等。例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。 |
调优的通用步骤:
调优通用步骤如图1所示。
父主题: 调优概述