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; }
これだけで、非同期アクセスができるのがすばらし。