Testing 使用JMeter查找应用程序可伸缩性点

Testing 使用JMeter查找应用程序可伸缩性点,testing,load,jmeter,scalability,Testing,Load,Jmeter,Scalability,我试图使用JMeter找到应用程序的可伸缩性点。我将可伸缩性点定义为“最小并发用户数,从中任何增加都不再增加每秒吞吐量” 我正在使用以下技术。安排我的负载测试运行一小时,每30秒启动一个发送SOAP/XML-RPC请求的新线程。为此,我将线程数设置为120,将爬升周期设置为3600秒 然后查看摘要报告侦听器中的总行吞吐量。每30秒添加一个新行(线程),在我的例子中,80个线程处于活动状态后,总吞吐量会上升,直到稳定在每秒123个请求。然后,随着最后20个线程的添加,它慢慢地将吞吐量降低到每秒12

我试图使用JMeter找到应用程序的可伸缩性点。我将可伸缩性点定义为“最小并发用户数,从中任何增加都不再增加每秒吞吐量”

我正在使用以下技术。安排我的负载测试运行一小时,每30秒启动一个发送SOAP/XML-RPC请求的新线程。为此,我将线程数设置为120,将爬升周期设置为3600秒

然后查看摘要报告侦听器中的总行吞吐量。每30秒添加一个新行(线程),在我的例子中,80个线程处于活动状态后,总吞吐量会上升,直到稳定在每秒123个请求。然后,随着最后20个线程的添加,它慢慢地将吞吐量降低到每秒120个。然后我得出结论,我的应用程序可伸缩性点是每秒123个请求,有80个活动用户


我的问题是,这是找到应用程序可伸缩性点的有效方法,还是我应该尝试不同的技术?

从技术角度看,您所做的工作确实回答了您关于某个特定用户场景的问题,尽管我认为您可能没有了解全局

首先,请记住,您发送的实际HTTP请求和启动时间通常会影响您所称的可伸缩性点。您的请求是否命中缓存?它们还不够随机吗?它们是不是太随机了?它们代表真实世界的请求吗?30秒会给你和20秒或10秒一样的结果吗

从我个人的经验来看,在分析应用程序性能时,查看图表更容易、更直观。这不仅仅是一个原始数据的问题,也是一个趋势和变化率的问题

例如,这里有一个使用JMeter和交互式JMeter结果图测试ghost.org博客platofom的示例。

我还执行了其他负载测试,这些测试反映了API的实际使用情况和其他重载测试,涵盖了我所有的请求类型。我正在测试的API有8种不同类型的请求和响应。对于这个测试,我选择了一个始终返回最大XML响应数据的请求。我将结果保存到一个CSV JTL文件中,我已将图形应用到JTL文件中,如响应时间图。我同意我以一种非常规的方式使用提升期来添加用户作为测试运行。回答您的一些问题:我的请求没有命中缓存。对于这种类型的测试,我不认为我需要随机请求,因为我只是试图确定当用户缓慢添加时,我的服务器可以产生的最大吞吐量是多少。更改爬升周期以便每10秒或20秒添加一个新用户不会影响结果,除非我在结果中更快地达到最大吞吐量(我可能应该对此进行测试以确认)。还有人对这种寻找可伸缩性点的技术有什么想法吗?我也会确保使用一些应用程序性能监控解决方案,比如New Relic。虽然JMeter将提供端到端的负载和响应时间,但查看后端性能KPI是非常有价值的。我最终使用SOAPUI进行性能监控,发现负载测试图和数据导出非常有用。谢谢你的建议。