性能瓶颈

性能瓶颈
        性能测试的目的是评估当前系统性能指标,分析定位解决性能瓶颈,预防规避性能风险。性能分析是为了确定导致性能瓶颈的原因,而调优就是用来解决性能瓶颈。通过某些手段来让系统的性能得到提升是性能调优的主要目的。

转载于https://blog.****.net/yang520java/article/details/79469067


检查性能的最通用的两个方法分别是:

(1)应用程序诊断
        应用程序的诊断是性能测试的最初目的。通过模拟多用户操作形成负载,检验应用程序是否能满足用户性需求。如果不能满足,则定位应用瓶颈,并寻找解决该瓶颈的方案,确保系系统在修正后能满足用户需求。对于一个项目来说,一般都以应用诊断为主。
(2)系统调优
        在性能调优中最基本的目的是为了满足用户,而进一步的要求是超越自己,这个时候需要做的是让系统能够比以前更加优秀地运行,通过生成负载,对测试结果进行分析,并且准备大量的软硬件环境进行迭代测试,找出影响性能的要素,最终提升系统的性能。一般产品都会采用系统调优的方式来逐步完善系统性能。

        所以性能瓶颈,就是说指限制系统性能的关键因素。
一般包括:

(1)硬件上的性能瓶颈

        主要指的是CPU、RAM方面的问题。例如,在进行软件需求分析、概要设计时,确定了在数据库服务器上需要6个CPU、12G内存但是在测试时,发现CPU的持续利用率超过95%,这时可以认为在硬件上出现了性能瓶颈。

(2)应用软件上的性能瓶颈

        一般指的是应用服务器、WEB服务器等应用软件,还包括数据库系统。例如,在WEBLogic平台上配置了JDBC连接池的参数,最大连接数为50,最小连接数为5,增加量为10。在测试时发现,当负载增加时,现有的连接数不足,系统会动态生成10个新的连接数,这样导致了交易处理的响应时间大大的增加。
这时可以认为在应用软件上出现了性能瓶颈。

(3)应用程序上的性能瓶颈

        一般指的是开发人员新开发出来的应用程序。例如,用Java或者C开发出来的部署在应用服务器上用于用户交易请求处理的应用程序。例如,某个开发员开发了一个缴费处理程序,在测试时发现,这个缴费处理程序在处理用户发过来的并发缴费请求时,只能串行处理,无法并行处理,导致缴费交易的处理响应时间非常长,这时可以认为在应用程序上出现了性能瓶颈。

(4)操作系统上的性能瓶颈

        一般指的是Windows、Unix、Linux这些操作系统。例如,在windows系统中,虚拟内存设置的不合理,都指定为C驱提供虚拟内存,在测试时发现当出现物理内存不足时,虚拟内存的交换效果非常不理想,导致交易的响应时间大大增加。这时可以认为在操作系统上出现了性能瓶颈。

(5)网络设备上的性能瓶颈

        一般指的是防火墙、动态负载均衡器、交换机等设备。例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其它负载较轻的应用服务器上。在测试时发现,动态负载均衡机制没有起到相应的作用,这时可以认为在网络设备上出现了性能瓶颈。


一般性能问题调优的步骤

Step1 确定问题

        1、检查代码是否出错;
        2、数据库的配置是否合适;
        3、操作系统的配置(虽然这样说,可是一般配置都没问题);
        4、硬件设置:如CPU、ARM等硬件的速率,一般这个是分析的重点;
        5、网络负载过重导致网络冲突和网络延迟

        
Step2.当确定了问题之后,我们要明确这个问题影响的是响应时间吞吐量,还是其他问题?

        是多数用户还是少数用户遇到的问题?如果是少数用户,这几个用户与其他用户的操作有什么不同?系统资源监控的结果是否正常?CPU 的使用是否达到了极限?IO情况如何?问题是否集中在某一类模块中?是客户端还是服务器出现问题?系统硬件配置是否够用?实际负载是否超过了系统的负载能力?是否未对系统进行优化?

Step3确定调整目标和解决方案。

        提高系统吞吐量,缩短响应时间,更好地支持并发。

Step4 测试解决方案
        对通过解决方案调优后的系统进行基准测试。

最后,如果达到了预期目标,调优工作就基本可以结束了。