通过仅修改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重新编写了。