通过仅修改Apache的设置即可模拟出令人兴奋的Web服务器的小技巧

为了确认CDN的行为,故意准备了反应缓慢的高压力Web服务器,所以这是一份仅通过配置变更来巧妙处理的备忘录。

以Debian、Ubuntu作为例子。首先,启用mod_ext_filter。

a2enmod ext_filter 

使用ExtFilterDefine指令,在输出之前定义并应用一个由Perl制作的过滤器,它将使程序休眠十秒钟。

<VirtualHost *:80>
        # 中略

        ExtFilterDefine latency mode=output cmd="/usr/bin/perl -e 'sleep 10; print <>;'" \
          preservescontentlength

        <Location />
                SetOutputFilter latency
        </Location>
</VirtualHost>

我将 Web 服务器的每个响应都延迟了10秒,并成功地模拟了一个非常慢的 Web 服务器。

请不要解释

虽然没有试过,但这种滤镜也许不错。

ExtFilterDefine latency mode=output cmd="/bin/sh -c 'sleep 10; /bin/cat'" \
          preservescontentlength

mod_qos是一个用于Apache Web服务器的模块。

我想起来后来还有mod_qos。

虽然本来这边更加聪明,但因为我很少用过,而且能够用较少的步骤达到目的,所以就算了。

公式样例

这次的提示在官方文件中有提到,但方法太过武断了,让我有点好笑。

 

ExtFilterDefine slowdown mode=output cmd=/bin/cat \
preservescontentlength

<Location />
    # core directive to cause the slowdown filter to
    # be run several times on output
    #
    SetOutputFilter slowdown;slowdown;slowdown
</Location>

最初写这篇文章时,以这个速度算得上是慢吗?

因为这个原因,看起来无法实现秒单位的延迟,所以我将其改用Perl重新编写了。

广告
将在 10 秒后关闭
bannerAds