如何解读Siege和Apache Bench的结果

9
我们有一个使用MySQL的网站,偶尔会在48小时内拥有10万个用户登录并进行购买。我们尝试使用像Apache Bench和Siege这样的工具来模拟此类负载。虽然关键指标似乎是并发用户数,而且我们已经得到了报告结果,但我们仍然感觉自己处于黑暗中。
我的问题是:我们应该测试哪些内容以预测这种流量?50个并发用户1000次?500个并发用户10次?我们正在查看数据库错误、Apache超时和响应时间。还应该考虑哪些方面?
这是一个模糊的问题,我知道没有“正确”的答案,我们只是想寻求一些关于确定我们的基础设施能够真正处理什么的一般性想法。谢谢!
2个回答

3
同时在线用户是其中一个关键因素 - 特别是适用于数据库连接池等。但您还需要验证测试的页面速率(页面/秒)是否在您预期的范围内。如果测试用例中的思考时间偏差很大,您可能会意外模拟比实际流量更高(或更低)的页面速率。思考时间是用户在页面请求之间花费的时间 - 阅读页面,填写表单等。
根据您手头的其他信息,这可能会帮助您计算要模拟的同时在线用户数: 虚拟用户计算器 完整的页面加载时间通常是评估系统性能最重要的指标。您还需要查看所有事务的失败率。您还应该寻找永远无法完成的交易。一些测试工具无法很好地报告这些情况,当服务器未响应时,允许模拟的用户无限期挂起...并且不报告此条件。寻找报告在特定页面或交易上等待的用户数量以及这些用户等待的平均时间的工具。

关于要查找的服务器端指标,你的应用程序还使用了哪些技术?对于.NET应用程序和PHP应用程序,您需要查看不同的内容。

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


1

理想情况下,您应该根据用户的使用模式进行建模,但是创建100k用户的模拟并发会话通常不容易实现。最好的方法是查看最繁忙的一小时的日志,并尝试找出一种模拟该负载水平的方法。

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

另一个关键要素是磁盘队列长度。

大多数情况下,流程是寻找整个站点或特定页面的响应速度慢,然后聚焦于原因。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接