【发布时间】:2017-08-08 04:47:17
【问题描述】:
对于流量巨大的网站,可以考虑哪些各种性能测试场景?有什么方法可以识别对网站性能产生不利影响的代码元素?
请提供类似于要测试的通用场景清单的内容,以确保正确的性能测试。
【问题讨论】:
标签: performance optimization testing
对于流量巨大的网站,可以考虑哪些各种性能测试场景?有什么方法可以识别对网站性能产生不利影响的代码元素?
请提供类似于要测试的通用场景清单的内容,以确保正确的性能测试。
【问题讨论】:
标签: performance optimization testing
最好先使用一些负载测试工具,例如 JMeter 或 PushToTest,然后开始针对您的 Web 应用程序运行它。 JMeter 模拟 HTTP 流量并以这种方式加载服务器。您可以这样做,也可以使用 PushToTest 对应用程序的 AJAX 部分进行负载测试,因为它可以使用 Selenium 脚本。
如果您没有资源(运行负载测试的计算机),您始终可以使用BrowserMob 之类的服务在可访问 Web 的服务器上运行脚本。
【讨论】:
听起来您需要更多的测试计划,而不是使用工具的建议。在性能测试中,最好看一下应用的用户——
使用此信息,您可以识别主要交易并得出不同的用户级别(例如 10、25、50、100)和用户类型的百分比(30% 用户 A,50% 用户 B,...)来测试这些交易。为您执行的每个测试计时这些事务,并检查事务时间与您的用户级别相比如何变化。
收集一些指标后,由于您应该能够将事务缩小到单个代码段,因此您将能够知道将代码改进的重点放在哪里。如果您仍需要进一步缩小范围,可以在每个事务中创建更精细的测试以提供更精细的结果。
【讨论】:
并发将在这里杀死您,因为您需要测试您的最大预计并发用户 + 同时访问数据库、网站和任何其他 Web 服务的摆动空间。这实际上取决于您使用的技术,但如果您与不同的 Web 技术有大量交互,您可能需要查看Neoload。我在使用这个网络压力工具方面取得了成功,如果您需要模拟特定、复杂的行为(例如模拟 AMF 流量,或使用来自网页的响应来指示请求行为),该支持是一流的。
【讨论】:
如果您有数据库层,那么一旦系统稳定(即没有内存泄漏或其他资源问题),这应该是您最初关注的焦点。如果数据库不是瓶颈(或不相关),那么您需要将 CPU/内存/磁盘 IO 和网络流量与增加的负载和增加的响应时间相关联。这让您了解容量和资源使用的相关性(但不是原因)。
要找到资源给定问题的原因,您需要建立一个 6 Sigma 风格的项目,在其中定义问题并执行根案例分析,以便查明成为瓶颈的代码(或资源配置) .在您的环境中完成此操作几次后,您会注意到工作负载、资源使用和对策(解决方案)的模式,这些模式将指导您在未来的性能测试“项目”中。
【讨论】:
要选择正确的性能方案,您需要完成下一个基本清单:
【讨论】:
性能测试是与同一应用程序的先前版本或与市场上现有参与者的比较测试。
案例 1 - 现有应用程序
1)对之前介绍的相同场景进行测试,以清楚了解升级前后应用程序的响应。
2) 如果您需要深入挖掘,您可以返回数据库团队了解哪些功能获得了更多请求。还可以询问他们在任何特定日期的平均请求总数,以便您可以接听有关测试的用户负载和持续时间。
案例 2 - 新应用程序
1) 寻找现有的市场参与者并根据竞争对手产品的关键功能设计测试(例如,Gmail 可能支持许多功能,通常使用的是启动 -> 登录 -> 撰写邮件 -> 收件箱 - >发件箱)。
2) 任何时候您都可以就他们认为的业务关键场景或将更频繁使用的场景向您的客户反馈。
【讨论】: