鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

パフォーマンスチューニング、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っているのがあるみたいだ。 これを指定すればでるようになるのかな???

おおっと、出るようになったぜぃ。