如何对php / mysql站点进行基准测试

2022-08-30 17:47:49

我想知道如何对php / mysql站点进行基准测试。

我们有一个Web应用程序几乎完成并准备上线,我们知道一年后有多少人会使用它,但完全不知道普通用户需要多少带宽,他们在数据库上消耗了多少时间等。我们需要确定要购买的正确服务器。

有没有服务器端的linux可以监控每个用户的这些统计信息?这样我们就可以获取这些数据并推断出来了吗?

如果我完全错了,请让我知道,但我相信这是新Web应用程序的常见活动。

编辑:我可能要求不正确的信息。我们可以看到数据库查询需要多长时间以及加载页面需要多长时间,但不知道服务器上的负载是多少。我问的问题是,我们平均一次可以处理100个用户吗?1000?需要什么类型的服务器要求才能达到1M用户。等。

感谢您的帮助。


答案 1

我发现相当有用的一个工具是jmeter,它允许(在最基本的)将浏览器设置为使用jmeter作为代理,然后您在网站上徘徊,它将记录您所做的一切。

一旦您满意,这是对您大多数网站的体面测试,您就可以将测试保存在jmeter中,并告诉它使用设定数量的线程和每个线程的循环数来运行测试,以模拟您网站上的负载。

例如,您可以运行 50 个客户端,每个客户端运行测试计划 10 次。

然后,您可以上下增加数字以查看它对站点的性能影响,它为您绘制了响应时间。

这使您可以调整不同的参数,尝试不同的缓存策略,并检查这些更改对现实世界的影响。


答案 2

您可以使用ApacheBench工具(ab,通常是apache Web服务器软件包的一部分)进行压力测试(10个客户端的1k请求= ab -c 10 -n 1000 http://url)的脚本,您怀疑这可能足够慢。它将显示响应时间的分布(在90%的情况下,请求在不到200毫秒的时间内处理)。

您还可以获取由该特定脚本执行的SQL查询,并为其执行“解释计划”,以大致了解当表中的记录多出10-100-10mln倍时,它将如何降级。

关于它可以服务多少用户 - 您可以使用自己喜欢的浏览器并模拟典型的用户访问,获取access_log文件并汇总发送的字节(日志行中的最后一个数字之一)。例如,它是5kb文本/ html + 50kb png / jpg / etc.=每个用户访问55kb。加上标头/等,假设每次访问60kb * 1m = 每天60gb流量。您的带宽是否足够好?(60gb/86.4ksec=700kb/秒)。


推荐