【问题标题】:Testing How Code Scales测试代码如何扩展
【发布时间】:2010-11-25 19:57:56
【问题描述】:

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

【问题讨论】:

    标签: php scalability scaling


    【解决方案1】:

    Apache 基准测试。它随 Apache Web 服务器一起提供。有点像这样:对于使用 10 个并发线程的 100 个请求,使用以下命令:

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

    用您的 AJAX 代码将调用的 url 替换 localhost url。输出将为您提供有关如何处理请求的良好报告。一些有趣的数字是:

    Complete requests
    Failed requests
    Requests per second
    

    【讨论】:

    【解决方案2】:

    我所做的,这将给出一个非常粗略的想法,是编写一个可以创建数十或数百个线程的应用程序,并随机访问服务器数十次,每个用户都有唯一的用户。

    所以,我有 100 个不同的测试用户,我会创建 100 个线程,然后随机地以随机的时间间隔继续执行一些操作。

    这将告诉您是否有一些规模问题。

    但最终你会遇到问题,因为你只有一个网络连接,所以这会限制一些速度,所以它并不完美。

    您也可以使用junitperf 来帮助解决此问题,因为您可以查看每个测试是否需要很长时间才能响应。

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

    您不希望网络服务器和测试在同一台计算机上,否则会严重影响结果,因为网络服务器将只获得一些 cpu 周期。

    【讨论】:

      【解决方案3】:

      鉴于这个问题,我会记录一个用户会话。然后编写重现该组调用的客户端代码。

      另一个选择是使用 VMware。 (请注意,我是一名员工)只需创建一堆虚拟机并与每个虚拟机连接到您的站点。仍然意味着大量的手动工作,但至少您不需要那么多机器来进行测试。

      【讨论】:

        【解决方案4】:

        我推荐LoadUI http://www.loadui.org/

        【讨论】:

          猜你喜欢
          • 2017-12-31
          • 1970-01-01
          • 1970-01-01
          • 2011-02-21
          • 2014-05-26
          • 2016-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多