« Squid2.6 のCOSSがいい感じ | メイン | バソキヤ2006に涙したい »

mod_proxyのretryを2段階にするpatch

mod_proxy_balancerのretryの「retryの秒数を2段階に」の件。
本格的にはサービスで使っていないのだが、patchを作って動くことは確認してる。

patchを適用すると、quick_retryとquick_retry_maxという設定が増えます。BalancerMemberがfailしたあと、quick_retry_max回はquick_retry秒間隔で接続を確認して、それ以降は通常通りretry秒毎になります。

設定は

BalancerMember http://127.0.0.1:81 loadfactor=10 retry=60 quick_retry=3 quick_retry_max=40 

な感じ。

mod_proxy_qretry.patchにpatch置いておきます。


このpatchは結局、Deployツールでproxyのdrop/addを行うようにしたのでサービスでは使っていません。
HTTP::Asyncでbalancer-managerを叩いてます。

use HTTP::Async;
use HTTP::Request;
my $async = HTTP::Async->new;
foreach my $url ( @$urls ) {
    $async->add( HTTP::Request->new( GET => $url ) );
}
while ( my $res = $async->wait_for_next_response ) {
    $ret{$res->request->uri}=$res->content;
}

これだけで、非同期アクセスができるのがすばらし。