CDNの挙動を確認するため、あえて応答の遅い、激おもWebサーバーを用意する必要があったので、設定変更だけで工夫したメモです。
Debian、Ubuntu系を例にします。まず、mod_ext_filter
を有効にします。
a2enmod ext_filter
ExtFilterDefine
ディレクティブで、出力の前に10秒スリープするPerl製フィルタを定義し、適用します。
/etc/000-default.conf
<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
あとで 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に書き換えたのでした。