我们有一个MySQL驱动的网站,有时会在48小时内获得100K用户,所有用户都登录网站并进行购买。
我们正在尝试使用Apache Bench和Siege等工具来模拟这种负载。
虽然关键指标在我看来是并发用户的数量,而且我们得到了报告结果,但我们仍然觉得我们处于黑暗中。
我想问的是:为了预测这种流量,我们应该测试哪些类型的东西?
50个并发用户1000次? 500个并发用户10次?我们正在查看数据库错误,apache超时和响应时间。我们还应该注意什么?
这是一个模糊的问题,我知道没有“正确”的答案,我们只是在寻找一些关于如何确定我们的基础设施可以切实处理的一般性想法。
提前致谢!
答案 0 :(得分:3)
同时用户肯定是关键因素之一 - 尤其是因为这适用于数据库连接池等。但您还需要验证测试的页面速率(页数/秒)是否也在您期望的范围内。如果您的测试用例中的思考时间过多,您可能会意外地模拟比实际流量高得多(或更低)的页面速率。思考时间是用户在页面请求之间花费的时间 - 阅读页面,填写表单等。
根据您手头的其他信息,这可能有助于您计算要模拟的同时用户数: Virtual User Calculators
最终用户看到的完整页面加载时间通常是评估系统性能的最重要指标。您还需要查找所有交易的失败率。您还应该留意从未完成的交易。某些测试工具不能很好地报告这些,允许模拟用户在服务器没有响应时无限期挂起...而不报告这种情况。查找报告在给定页面或事务上等待的用户数量以及这些用户等待的平均时间的工具。
至于要查找的服务器端指标,您的应用构建的其他技术是什么?您将要查看.NET应用程序与PHP应用程序的不同内容。
最后,我们发现查看系统如何响应增加的负载非常有价值,而不是仅考虑单一负载水平。 This article详细介绍。
答案 1 :(得分:1)
理想情况下,您希望为用户建模您的使用情况,但通常不容易为100k用户创建模拟并发会话。 最好的来源是检查最繁忙时刻的日志,并尝试找出模拟该负载级别的方法。
数据库通常是基础架构的关键部分,因此我将查看锁定等待的数量和长度以及db语句的数量和持续时间。
要查看的另一个关键项是磁盘队列长度。
大多数情况下,流程是在整个网站或特定网页上寻找缓慢的响应,然后深入了解原因。
负载测试的最大问题是很难测试您的网络,如果您(通过大多数公共站点)通过您的ISP获得有限的带宽,这可能会产生性能问题,而这些问题并未反映在负载测试中