9

我们有一个 MySQL 驱动的站点,偶尔会在 48 小时内获得 10 万用户,所有用户都登录该站点并进行购买。

我们正在尝试使用 Apache Bench 和 Siege 等工具来模拟这种负载。

虽然在我看来关键指标似乎是并发用户数量,并且我们已经获得了报告结果,但我们仍然觉得我们处于黑暗中。

我想问的是:我们应该测试什么样的东西来预测这种流量?

50个并发用户1000次?500个并发用户10次?

我们正在查看数据库错误、apache 超时和响应时间。我们还应该看什么?

这是一个模糊的问题,我知道没有“正确”的答案,我们只是在寻找一些关于如何确定我们的基础设施可以实际处理的一般想法。

提前致谢!

4

2 回答 2

3

同时用户当然是关键因素之一——尤其是当这适用于数据库连接池等时。但您还需要验证测试的页面速率(页面/秒)是否也在您期望的范围内。如果您的测试用例中的思考时间大大减少,您可能会意外地模拟出比实际流量高(或低)得多的页面速率。思考时间是用户在页面请求之间花费的时间——阅读页面、填写表格等。

根据您手头的其他信息,这可能会帮助您计算要模拟的同时用户数: 虚拟用户计算器

最终用户看到的完整页面加载时间通常是评估系统性能的最重要指标。您还需要查找所有事务的失败率。您还应该注意永远不会完成的交易。一些测试工具不能很好地报告这些,允许模拟用户在服务器没有响应时无限期地挂起......并且不报告这种情况。寻找报告在给定页面或事务上等待的用户数量以及这些用户等待的平均时间的工具。

至于要寻找的服务器端指标,您的应用程序还基于哪些其他技术?您将希望查看 .NET 应用程序与 PHP 应用程序的不同之处。

最后,我们发现查看系统如何响应增加的负载,而不是仅仅查看单一级别的负载非常有价值。这篇文章更详细。

于 2010-11-03T13:35:28.113 回答
1

理想情况下,您希望为用户建模您的使用情况,但为 10 万用户创建模拟并发会话通常不容易完成。最好的来源是查看最繁忙时间的日志,并尝试找出一种方法来模拟该负载级别。

数据库通常是基础设施的关键部分,因此我会考虑记录锁定等待的数量和长度以及 db 语句的数量和持续时间。

另一个需要关注的关键项目是磁盘队列长度。

大多数情况下,该过程是在整个站点或特定页面中寻找缓慢的响应,然后找出原因。

负载测试的最大问题是很难测试您的网络,并且如果您(像大多数公共站点一样)通过您的 ISP 的带宽有限,则可能会产生负载测试中未反映的性能问题。

于 2010-11-03T02:30:11.630 回答