大型网站压力测试及优化方案

摘要:性能测试在大型网站系统的设计和开发中非常重要,通常会和容量预估等工作结合在一起,穿插在系统开发的不同方案。性能测试可以帮助我们及时发现系统的性能短板,评估系统的能力,在这个基础在上再进行针对性的性能优化。木桶理论应用在系统优化中木桶理论又称短板理论,其核心思想是一只木桶盛水多少,并不取决于最高的木板,而取决于最短的那块木板。木桶原理应用在系统分析中,

大型网站压力测试及优化方案

摘要:性能测试在大型网站系统的设计和开发中非常重要,通常与容量估计相结合,穿插在系统开发的不同方案中。性能测试可以帮助我们及时发现系统的性能缺陷,评估系统的能力,然后在此基础上进行有针对性的性能优化。

木桶理论应用于系统优化

木桶理论,又称短板理论,其核心思想是,一个木桶的水量不取决于最高的木板,而取决于最短的木板。

桶原理应用于系统分析,即系统的最终性能取决于系统中性能最差的组件。为了提高系统的整体性能,优化系统中性能最差的组件可以获得最佳效果。

大型网站压力测试及优化方案

在网站系统中,用户访问请求到达服务器,然后服务器返回数据并显示给用户。这个过程需要大量的处理,每个过程的低效率都会影响系统的整体性能。

根据木桶理论,如果服务器性能强大,内存资源充足CPU但是磁盘I/O如果性能不足,系统的整体性能取决于目前最慢的磁盘I/O速度不是目前最好的CPU或内存,此时,磁盘I/O是系统性能瓶颈。

例如使用Redis进行存储的系统,由于Redis本身性能很好,通常存储不会限制系统的性能,在大量要求的情况下,Redis此时,限制系统性能的瓶颈将成为网络带宽。

如何实施压力测试

性能测试在大型网站系统的设计和开发中非常重要,通常与容量估计相结合,穿插在系统开发的不同方案中。

性能测试可以帮助我们及时发现系统的性能缺陷,评估系统的能力,然后在此基础上进行有针对性的性能优化。

同时,压力测试也有助于我们验证系统的稳定性和可靠性。

一个完整的性能测试方案通常包括以下几个方面:

1.压力测试及生成性能报告

压力测试的一个关键点是如何产生压力,通常可以通过编写脚本模拟请求或使用成熟的压力测试工具来进行。

压力测试是如何使模拟压力测试的数据尽可能真实,越接近真实用户越好。

2、根据性能报告定位系统瓶颈,进行有针对性的优化、测试和优化可与日常开发并行

压力测试完成后,我们会得到一份压力测试报告,通常会告诉我们系统QPS、TPS、响应延迟等数据,

这些数据可以让我们全面了解服务器的性能,发现问题,但不能帮助我们定位问题。

此时,我们可以从系统的每个组件开始,关注系统CPU、内存、IO、网络,比较这些链接对整体性能的影响,确定性能问题是由系统的哪一部分引起的,然后在系统中逐一优化。

3.估计容量承载能力,合理规划系统资源

压力测试的一个重要目的是最大限度地发挥现有服务器资源的价值,

经过初步的测试和分析,此时我们对系统的整体性能有了认识,对服务器的承载能力有了预测,

此时,我们可以结合业务规模配置服务器数量,CDN资源等,使最少的资源产生最大的价值。

常用压力测试工具选型

压力测试的关键是如何产生压力。选择哪种测试工具非常重要。百度/腾讯等大型互联网公司拥有专门的测试开发团队,开发公司内部应用的测试工具,以更好地适应公司的业务SAAS在服务的重要组成部分,几家云服务提供商也开设了压力测量和性能监控服务。

大多数公司仍然会选择自己完成测试工作,这里要注意常用的压力测试工具。

1、几款流行的压力测试工具

(1)JMeter

Apache JMeter是Apache基于组织发展Java用于软件压力测试的压力测试工具最初设计用于Web应用测试但后来扩展到其他测试领域。 它可以用来测试静态和动态资源,如静态文件Java小服务程序,CGI脚本、Java 对象,数据库, FTP服务器, 等等。

JMeter 可用于模拟服务器、网络或对象的巨大负载,测试其强度,分析不同压力类别下的整体性能。

另外,JMeter通过创建断言脚本,可以对应用程序进行功能回归测试,验证您的程序是否返回预期结果。

最大限度地提高灵活性,JMeter允许使用正则表达式创建断言。

(2)LoadRunner

LoadRunner是惠普的自动负载测试工具,可以预测系统行为,优化性能。LoadRunner通过模拟实际用户的操作行为和实时性能监控,强调整个企业系统,帮助更快地确认和发现问题。此外,LoadRunner 能支持最宽范的协议和技术,量身定做地提供解决方案。

(3)其它测试工具

Siege它是一种开源压力测试工具,可以根据配置对齐WEB多用户并发访问网站,

在一定数量的并发访问下,记录每个用户所有请求过程的相应时间。

TCPCopy所有基于请求复制(都是基于tcp的packets)可将在线请求导入测试系统。

TCPCopy其特点是可以复制在线真实流量,模拟用户数据。

2.性能测试工具的横向比较

这里比较主流 JMeter和LoadRunner,一般来说,互联网公司除了自主研发测试工具的公司外,还使用它们JMeter更多的测试工具。

大型网站压力测试及优化方案

如何监控系统资源,定位性能瓶颈

压力测试可以暴露系统性能问题,如高并发下访问缓慢、服务停机等,但压力测试不能具体存在瓶颈,必须配合适当的资源监控,帮助我们定位问题。

1、资源监测方案配置合理

(1)使用nmon监控系统性能

nmon是Linux与其他系统资源监控工具相比,广泛使用的监控和分析工具,nmon记录的信息相对全面。它可以在系统运行过程中实时捕获系统资源的使用,并将结果输出到文件中,然后通过nmon_analyzer工具产生数据文件和图形结果。

nmon记录的数据包括以下几个方面:

● cpu占用率

● 内存使用

● 磁盘I/O速度、传输和读写率

● 文件系统的利用率

● 网络I/O速度、传输和读写率、错误统计率与传输包的大小

● 消耗资源最多的过程

● 详细的计算机信息和资源

● 页面空间和页面I/O速度

● 用户定制的磁盘组

● 网络文件系统

(2)使用rpc.rstatd监控系统性能

rpc.rstatd通常配合LoadRunner注意与系统服务一起使用rpc.statd进行区分。

rstatd后台程序可以从系统核心获取系统性能统计的相关信息,并将结果返回到调用程序。

进行压力测试时,LoadRunner客户端通过给服务器 rstatd 后台程序发送请求收集应用程序或数据库服务器的性能数据。

(3)合理配置不同服务的资源监控方案

以Java以服务为例,可以同时进行压测JVM虚拟机进行性能监控,这方面常用的有Jvisualvm、jps、jstack等。

下面是Jvisualvm可监控本地和远程的应用界面JVM例运行状态。

大型网站压力测试及优化方案

针对测试报告进行有针对性的优化

压力试验发现问题后,应进行有针对性的优化。对于不同的系统,这一过程的策略并不确定,但可分为以下步骤:

1.定位性能瓶颈,找出系统存在的问题

不同的系统有不同的特点,在性能瓶颈上也有不同的性能。一般来说,以下方面通常有很大的优化空间:

(1)磁盘I/O及文件操作

因为磁盘I/O读写速度比内存慢得多。如果程序在运行过程中需要等待磁盘I/O完成,那么低效I/O操作会拖累整个系统。

(2)网络操作

读写网络数据和磁盘I/O类似。由于网络环境的不确定性,特别是互联网上数据的读写,网络操作的速度可能比本地磁盘快I/O更慢。

(3)CPU

对计算资源要求较高的应用,由于其长期不间断地占用大量的计算资源CPU资源,那么对CPU竞争会导致性能问题。如科学计算,3D渲染等对CPU应用需求旺盛。

(4)高并发下的上下文切换和锁竞争

如果高并发程序没有得到很好的优化,就会有大量的锁竞争的锁竞争将显著增加线程上下文切换的成本,对性能产生很大的影响

(5)数据库

大多数应用程序离不开数据库,大量数据的读写操作可能需要很长时间。应用程序可能需要等待数据库操作完成或返回请求的结果集,因此缓慢的同步操作将成为系统的瓶颈。

2、确定调整目标,提出解决方案

在发现系统的性能问题后,需要制定相应的解决方案。

影响性能的典型问题,如:

... ...

大型网站压力测试及优化方案

 推荐阅读

点击阅读?压力测试遇到了很多TIME_WAIT之后

点击阅读?Web一例服务器压力测试

点击阅读为什么需要云压力性能测试?

点击阅读?零基础完成Loadrunner压力测试

点击阅读使用LoadRunner对web总结服务器压力测试

大型网站压力测试及优化方案大型网站压力测试及优化方案

点击左下角阅读原文查看更多内容!

大型网站压力测试及优化方案

原创文章,作者:墨羽SEO,如若转载,请注明出处:https://www.moyuseo.com/tutorials/wzyh/26420.html

(0)
墨羽SEO的头像墨羽SEO
上一篇 2022年4月17日
下一篇 2022年4月17日

相关推荐

分享本页
返回顶部
欢迎来到互联网运营人学习交流技术网站!