2009-09-05 95 views
5

我目前正在研究一些Ajax沉重的代码,我想知道我的服务器如何随着越来越多的用户(希望)开始使用我的web应用程序而进行扩展。现在只在我的内部测试服务器上,我想知道如何去模拟几百或几千个用户,以便我可以看到它如何处理更重的负载。它是用PHP/MySQL编写的,我真的不想找到成百上千台手动设置和测试的计算机。:)在此先感谢,任何建议或方向都非常感谢。测试代码规模如何

回答

11

Apache基准测试。它随Apache Web Server一起提供。有点是这样的:对于100项的要求使用10个并发线程,使用这个命令:

ab -n 100 -c 10 http://localhost/ 

与您的AJAX代码将调用一个网址替换本地主机URL。输出会给你一个很好的报告,说明如何处理请求。一些有趣的数字是:

Complete requests 
Failed requests 
Requests per second 
+0

在同样的'ab',有崇 - http://tsung.erlang-projects.org/我一直在使用,这是一个极好的工具。 – inerte 2009-09-05 05:53:36

0

我做了什么,它会给一个非常粗略的想法,是编写一个可以创造几十或几百个线程的应用程序,并随机点击服务器几十个每个倍,拥有独特的用户。因此,我有100个独特的测试用户,并且我会创建100个线程,随机继续以随机间隔进行一些操作。

这会告诉你是否有一些规模问题。

然而,最终你会遇到问题,因为你只有一个网络连接,所以会扼杀速度,所以它不是完美的。

您也可以使用junitperf来解决这个问题,因为您可以查看每个测试是否花了很长时间来做出回应。

最好的办法是进行这些测试,将它们放在尽可能多的机器上,并且一次运行它们,让10台计算机假装成10或100人比有一台计算机更有效成为这些人中的每一个人。

你不想让网络服务器和测试在同一台计算机上,否则会严重混淆结果,因为网络服务器只会获得一些cpu周期。

0

鉴于此问题,我会记录用户会话。然后编写客户端代码,再现该组调用。

另一种选择是使用VMware。 (请注意,我是一名员工)只需创建一堆虚拟机并连接到每个虚拟机。仍然意味着大量的手动工作,但至少你不需要尽可能多的机器来完成测试。