Monoceros というPSGI/Plackサーバ書きました https://metacpan.org/release/Monoceros https://github.com/kazeburo/Monoceros StarmanやStarletのようなPreforkなアプリケーションサーバでは、コネクションの維持イコールプロセスの占有なので、HTTPのKeepAli... 続きを読む
2013-04-10 最近のPlack/Starletのパフォーマンス改善まとめ。最大2倍の性能向上 最近のPlackとStarletにはパフォーマンス改善のため次のような変更が加えられています。Plackに対する変更 (カッコ内はバージョン) Plack::Request::query_parameters の最適化... 続きを読む
固定フォーマットしかサポートしないけど、Plack::Middleware::AccessLogより軽い PM::AxsLogがLTSVフォーマット形式のログに対応しました https://metacpan.org/release/KAZEBURO/Plack-Middleware-AxsLog-0.03 PM::AxsLogについては Perl 2012 advent calenda... 続きを読む
Plack::Middlewareでリクエスト終了後になにがしかのか処理をしたい場合 sub call { my ($self, $env) = @_; my $t0 = [gettimeofday]; my $res = $self->app->($env); my $ela = Time::HiRes::tv_interval($t0); }; と書きそうになりますが、これだと $res が ... 続きを読む
開発メモその3です。今回は Perl のおはなし。何年も前に作ったウェブアプリケーションのコードを開いてみたら黒歴史なコードが出てきて憂鬱な気分になる、そんな経験ありませんか。私はあります。ずっとそんな現実から目を背けて生きてきました。さて、先日 Pe... 続きを読む
plackpackageごとのメモリ使用量とリクエストを処理する前後の増分を確認できるPlack::Middlewareを作りました。時間が経つとぶくぶく太るプロセスがいるときに、犯人特定の助けになると思います。https://github.com/hirose31/Plack-Middleware-MemoryUsage要... 続きを読む
« Perl Advent Calendar Japan 2012 は明後日からです、みんな参加して寿司を食べよう! | Main plackp -R したプロセスを終了する時には SIGHUP ではなく SIGTERM を送るべき、もしくは daemontools で plackup -R するのは筋が悪い話 スレタイ速報だから内容... 続きを読む
割と良く見る間違いです builder { enable "ServerStatus::Lite", path => '/server-status', allow => [ '127.0.0.1', '192.168.9.0/24'], scoreboard => ..; enable 'ReverseProxy'; $app; }; これは間違いです。リバースプロキシ配下にてアプリケーションサ... 続きを読む
「君のPSGIファイルを僕のミドルウェアでいっぱいにしたい」という台詞を思いついたけど、埋めれるほどPlack::Middlewareを書いてないkazeburo です。そんな僕が一番最近書いた Plack::Middleware がYet Anotherなアクセスログ記録ミドルウェア AxsLog です。某... 続きを読む
The requested blog was not found -- unless you requested that of Dan Kogai (小飼 弾). 本書「Plack Handbook」は、タイトルどおりPSGI/Plackのハンドブック。書いたのはその父@miyagawaその人。内容は間違えようがないし、仮に間違っていたとしてもすぐ直... 続きを読む
https://github.com/motemen/AnyEvent-plackup 使い方は簡単で、 use AnyEvent::plackup; my $server = plackup(app => \&psgi_app, port => $port); とするだけです。ポートを指定しないと適当に空いているポートが選ばれます。 で、これだけだとただの Twiggy... 続きを読む
https://metacpan.org/module/Plack::Middleware::AxsLogPlack::Middleware::AccessLog みたいなやつだけど、プロダクション環境でつかいやすいようにつくられてる。フォーマットのカスタマイズがあんまできないけど、速いというのが一番のメリットですね。アク... 続きを読む
Plack::Session::Store::File はお手軽でちょっとしたものを作りたいときに便利なんですが、いかんせんアクセスしただけでセッションファイルを作りまくるのは嫌なのでなんとかしたい、という話です 結論からいうと以下のようにすればいいようです。ここでは Me... 続きを読む
A weblog about Programming, Tech, gadgets, Japan and San Francisco. I’m proud and excited to announce the long-awaited release of Plack 1.0 on CPAN. This is our 120th release since we started this project on October 2009 and has commits from... 続きを読む
https://github.com/fujiwara/Plack-Middleware-GTop-ProcMemPlack アプリケーションが、どれかの処理でメモリを使いすぎてプロセスが太るらしい。でもそれがどのURLを処理したときなのかが分からない、という場合にこんな Middleware を使えば調べられるかなと... 続きを読む
Plack アプリで遅延ロードされるモジュールを見る アプリケーションで利用するモジュールは、できる限り先読み(preload)しておきたい。先読みしておけば、アプリケーション全体のメモリ消費が抑えられるし、遅延ロード(Lazy Load)のコストがなくなります。 モジ... 続きを読む
Reverse Proxyの後ろでApplication Serverを動かす際に、REMOTE_HOSTを本当のアクセス元に書き換えてくれる仕組みはいくつかありますが^1、Plackでは壇上氏の Plack::Middleware::ReverseProxy がそれにあたります。 ^1 例えば mod_extract_forwarded http://ww... 続きを読む
Plack::Middleware::AccessLog は Apacheライクなログが残せる便利ミドルウェアなんですが使う上で一つ注意点があります。 use Plack::Builder; builder { enable "AccessLog", format => "combined"; sub { die }; }; これで、500エラーのログが残ることを期待... 続きを読む
2011-12-08 00:40追記 @karupaneruraさんに指摘されて、s/Plack::Middleware::Conditionals/Plack::Builder::Conditionals/ しました。ありがとうございます。@kazeburoさんすみませんでした。 こんにちは。Songmuです。鎌倉の面白法人でPerlでソーシャルゲーム... 続きを読む
だいたいaliasしてるらしいです。padでaliasつくると楽ですね。 alias pad="plackup -MPlack::App::Directory \ -e 'Plack::App::Directory->new->to_app'" 参考:第1回 PSGI/Plack―フレームワークとサーバをつなぐエンジン (2)|gihyo.jp … 技術評論社 続きを読む