【问题标题】:How to make apache slow and unreliable?如何使 apache 变得缓慢且不可靠?
【发布时间】:2010-11-09 18:18:39
【问题描述】:

我正在使用 REST 服务从主机检索数据的移动设备上编写一些代码。 REST 服务由 Apache 代理。在测试模式下,我希望能够模拟网络中断(就好像设备失去了它的单元连接一样)来测试处理间歇性故障的应用程序。我还需要验证它在网络连接速度较慢时的行为。

我目前正在使用 Traffic Shaper XP 来降低网络连接速度,但现在我需要一些东西来让 Apache 服务器随机和按预定义的顺序发送连接重置(以设置和重复特定的测试场景)。

【问题讨论】:

  • 让它通过 CGI 执行 PERL 脚本。这会减慢速度。
  • 这对 skaffman 一点帮助都没有。
  • 现在是星期五下午。我觉得很轻浮。
  • freebsd 中的 Dummynet 就是为这种测试而设计的。
  • 从 OS X 10.7 (Lion) 开始,Apple 已将一个工具与 XCode 捆绑在一起,称为 Network Link Conditioner。它提供了所需的功能。

标签: apache testing apache2 stress-testing


【解决方案1】:

在 Apache2 中,您可以通过调整 apache2.conf 中的 prefork 设置来使其变慢。下面的设置应该让 apache 变得非常慢。他们使我的本地 Web 应用程序的加载时间延长了 700%。

<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       2
    MaxSpareServers      2
    MaxClients          4
    MaxRequestsPerChild   0
</IfModule>

【讨论】:

    【解决方案2】:

    编写一个小代理,将 TCP 连接从您的应用程序转发到 apache 服务器,您可以在测试中设置它以在 x 个字节或毫秒后切断连接。

    【讨论】:

      【解决方案3】:

      看起来 DummyNet 是最接近的东西,但它仍然不完全存在。对于可重复的测试,最好对丢弃的数据包和重置进行一些控制。

      【讨论】:

        【解决方案4】:

        我强烈推荐 Shopify 的 https://github.com/Shopify/toxiproxy

        下载https://github.com/Shopify/toxiproxy/releases的cli和服务器

        运行服务器:

         ./toxiproxy-server-linux-amd64
        

        在另一个端口上的 cli 设置代理到 apache,例如8080

        ./toxiproxy-cli create apache -l localhost:8080 -u localhost:80
        

        使连接缓慢且不可靠:

        ./toxiproxy-cli toxic add apache -t latency -a latency=3000 
        ./toxiproxy-cli toxic add apache -t limit_data -a bytes=1000 --tox=0.01
        

        这里为 1% 的请求添加 3 秒的延迟并在 1000 字节后停止,还有其他带宽选项等。您可以在使用过程中添加或删除这些选项。那里还有很多其他功能和库。

        【讨论】:

          【解决方案5】:

          这是 Unix 还是 Linux 环境? nice 将其设置为较低的优先级,然后运行高 CPU 使用率任务,例如听音乐、播放电影、计算 pi 等。Apache 的低优先级应该会产生类似于您正在寻找的问题。

          【讨论】:

          • 这是一个 Windows (aaack) 环境。我在想我可能需要建立一个 Linux VM 才能真正拥有我需要的控制权。我也在想我可能需要编写一个 apache 模块来获得我想要的控制级别。
          • 你也许可以用 Windows 做同样的事情。只需将优先级设置为最低(如果允许的话),然后运行SuperPI
          【解决方案6】:

          在不同的(或相同的)计算机上使用命令行工具ab 来增加 apache 的负载。更多信息here.

          【讨论】:

            猜你喜欢
            • 2018-01-28
            • 2013-12-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多