パフォーマンスチューニング、plackの出力するログフォーマットを変えたいけれど
Twienのパフォーマンスが今一なので、もう少ししっかりと調べていこうとおもった。 Webサーバnginxにレスポンスタイムを出力するよう下記のようにnginx.confを変更した
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_useragent" $request_time';
次は、アプリケーションサーバのログフォーマットを変更してレスポンスタイムを出すようにしてみる。 Plack::Middleware::AccessLog
builder { enable "Plack::Middleware::AccessLog", format => '%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i" %T'; enable match_if addr(['192.168.0.0/24','127.0.0.1']), "Plack::Middleware::ReverseProxy"; $app; };
あら、レスポンスタイムが出力されないなぁ。。 何かが間違っているはず。
http://perl-users.jp/articles/advent-calendar/2012/hacker/5
plackup もしかして、supervisorで起動しているけど、標準エラー出力先のファイルをみていないのかも?!
解決しました
ランチャーで環境変数PLACK_ENVでproductionを渡すようにしたら解決しました。 何も指定しないと、developmentだからデフォルトフォーマットが変えられなかったってことなのかな??
#!/bin/sh export MOJO_MODE=production export TWIEN_ENV=production export PLACK_ENV=production exec /home/tatsumi/perl5/perlbrew/perls/perl-5.16.1/bin/start_server --port=8009 --interval=10 -- /home/tatsumi/perl5/perlbrew/perls/perl-5.16.1/bin/plackup -s Starlet --workers 5 -MFindBin -a /home/tatsumi/twien/twien.psgi
でも、レスポンスタイム%Tのところには「-」が表示されるだけで全然時間が計測できない。おかしいなぁ。%Dにしてみても同じだし。productionモードにして速度がはやくなった??
Plack::Middleware::AccessLog::Timedっているのがあるみたいだ。 これを指定すればでるようになるのかな???
おおっと、出るようになったぜぃ。