我目前正在处理一些 Ajax 繁重的代码,我想知道随着越来越多的用户(希望)开始使用我的 Web 应用程序,我的服务器将如何扩展。它目前仅在我的内部测试服务器上,我想知道如何模拟几十或几千个用户,以便我可以看到它如何处理更重的负载。它是用 PHP/MySQL 编写的,我真的不想找到数百台计算机来手动设置和测试 :) 在此先感谢,非常感谢任何建议或指导。
4 回答
阿帕奇基准。它随 Apache Web 服务器一起提供。有点像这样:对于使用 10 个并发线程的 100 个请求,使用以下命令:
ab -n 100 -c 10 http://localhost/
用您的 AJAX 代码将调用的 url 替换 localhost url。输出将为您提供有关如何处理请求的良好报告。一些有趣的数字是:
Complete requests
Failed requests
Requests per second
我所做的,将给出一个非常粗略的想法,是编写一个可以创建数十或数百个线程的应用程序,并且每次随机访问服务器数十次,具有唯一的用户。
所以,我有 100 个不同的测试用户,我会创建 100 个线程,然后随机地以随机的时间间隔进行一些操作。
这将告诉您是否有一些规模问题。
但最终你会遇到问题,因为你只有一个网络连接,所以这会限制一些速度,所以它并不完美。
您也可以使用junitperf来帮助解决这个问题,因为您可以查看每个测试是否需要太长时间才能响应。
最好的办法是进行这些测试,将它们放在尽可能多的机器上,并同时运行它们,让 10 台计算机每台伪装成 10 或 100 人比让一台计算机伪装成每个人更有效这些人。
您不会希望网络服务器和测试在同一台计算机上,否则这将严重破坏结果,因为网络服务器将只获得一些 cpu 周期。
鉴于这个问题,我会记录一个用户会话。然后编写重现该组调用的客户端代码。
另一种选择是使用 VMware。(请注意,我是一名员工)只需创建一堆虚拟机并与每个虚拟机连接到您的站点。仍然意味着大量的手动工作,但至少您不需要那么多机器来进行测试。
我推荐 LoadUI http://www.loadui.org/