Catalystアプリでstarmanとかplackをabベンチ

catalystアプリケーションでstarmanを使ってみてabしてみた

ab -n 100 -c 10 http://127.0.0.1:5000/

catalyst server

Requests per second: 15.50 [#/sec] (mean)

plackup -o 127.0.0.1 -I lib script/myapp.psgi

Requests per second: 11.45 [#/sec] (mean)

starman script/myapp.psgi --host 127.0.0.1 -I lib port 5000 --disable-keepalive --user www

Requests per second: 25.82 [#/sec] (mean)

starman script/myapp.psgi -MCatalyst -MDBIx::Class --host 127.0.0.1 -I lib port 5000 --disable-keepalive --user www

Requests per second: 36.08 [#/sec] (mean)

starman script/myapp.psgi --workers 10 -MCatalyst -MDBIx::Class --host 127.0.0.1 -I lib port 5000 --disable-keepalive --user www

Requests per second: 41.69 [#/sec] (mean)

Apacheプロキシ経由(keepalibe off) starman script/myapp.psgi --workers 10 -MCatalyst -MDBIx::Class --host 127.0.0.1 -I lib port 5000 --disable-keepalive --user www

Requests per second: 25.44 [#/sec] (mean)

ちなみに--workers 100したらスワップしまくってload average100とかいくのでworkersの数には注意、サーバの身の丈にあった数にしましょう。 なんか遅いなあ時間かかるなあと思ったらサーバが死にそうでした あとworkersをworkerと書いてた事もあったりしました
workersを増やす=たくさん処理できるって考えると、なるべく多くメモリ積むか、利用メモリが少なくなるように書いたほうがいいのかなーってそこまでするならcatalyst使わない方がいいじゃないかとかいろいろ考えた。 

Catalystでキャッシュとか

ひさしぶりにはてな・・とcatalyst

最近さくらの一番安いサーバにあるサイトを引っ越しさせたんだけど、CPUが大変になっていたのでキャッシュしようとおもったわけです。 以前利用していたさくらの専用サーバはアドバンスドの中ぐらいの奴で、メモリ増やしたりとまあそこそこ良かったんだけど、違うサーバに帯域使うやつ移動させるし、7800円サーバ安いし月末だしって事で思い切って移動させてみた。で正規表現たくさんつかってたり、いろいろCPU結構きっついなあって事でキャッシュ。 今まではCatalyst 5.7系で頑張っていたんだけどこれを機に5.8に変更、そのままでも良かったんだけどなんとなく。

Catalyst::Plugin::Cache

http://search.cpan.org/~bobtfish/Catalyst-Plugin-Cache-0.10/
Catalyst::Plugin::Cache
使い方見るとkei,valueのset,getでmemcachedと同じ というかこれmemcachedつかってるならあんま意味無いかな。 バックエンドやらなにやら選べたり、つくったりしたりするときおんなじAPIで使えるっての利点なのかな。 Catalystのpluginらしいモジュールなのかなとか

Catalyst::Plugin::PageCache

http://search.cpan.org/~mramberg/Catalyst-Plugin-PageCache-0.22/
こちらは出力するページ自体をキャッシュしてしまうやつ。 これは前から知ってたのでこれでも使おうかなと思って調べてついでに久しぶりにブログでも囲うかなというかんじなのですわいよ
使い方はかんたんす。 いろんな制御も簡単。Catalystクックブックにものってる。 ちなみにPageCacheはpluginの最後に書く必要がある。
キャッシュはCatalyst::Plugin::Cache::FastMmap, Catalyst::Plugin::Cache::FileCache, Catalyst::Plugin::Cache::Memcachedから選べる

以上適当です。 詳しくはドキュメント見てください

アクセスもとIPアドレスを設定する

サーバには複数のIPアドレスがくっついてるけど、IP変えてアクセスしたいなあと思ってLWP::UserAgentを使う際に接続するIPアドレスをどう設定すればいいのかなあと調べてみた。

どうぐぐったらいいかわからなかったけど、結局公式のドキュメントみたらなんとなくわかった

$ua->local_address( $address )
Get/set the local interface to bind to for network connections. The interface can be specified as a hostname or an IP address. This value is passed as the LocalAddr argument to IO::Socket::INET.

バインドとかbindでぐぐるとよかったのかな。

うー久しぶりにブログ書いた。 

plackな毎日とData::Dumper::HTML

今頃plackやってますが面白いですね。 mojoとかもやってましたけど、めんどくさくなってきました。 plackup便利。 あとData::Dumper::HTMLがData::Dumperの中身をHTML化してくれるだけなんだけど、よくデバッグとかにテンプレートのフッターあたりにDumperした内容を表示したりするのですけど、HTML化されてると整形されてるので見やすくていいですね。

google app engineでエラー

Traceback (most recent call last):
  File "GoogleAppEngineLauncher.py", line 42, in <module>
  File "wx\_core.pyc", line 7913, in __init__
  File "wx\_core.pyc", line 7487, in _BootstrapApp
  File "launcher\app.pyc", line 53, in OnInit
  File "launcher\app.pyc", line 97, in _CreateModels
  File "launcher\maintable.pyc", line 35, in __init__
  File "launcher\maintable.pyc", line 86, in _LoadProjects
  File "launcher\project.pyc", line 63, in ProjectWithConfigParser
  File "launcher\project.pyc", line 260, in _LoadFromConfigParser
  File "ConfigParser.pyc", line 520, in get
ConfigParser.NoOptionError: No option 'name' in section: '1'

なエラーがでて「google_appengine_projects.ini」を削除すればいいラインだけど、google_appengine_projects.iniがdocument and settingsにあるという記述があったので見てみたけど、見つからない。 結局あった場所は環境変数homeに設定してあった場所でした。 探すのに大変時間がかかった。

Mojoと喪女?

はてなタグ検索でmojoすると、おそらく喪女な意味でmojoを使ってるユーザがいる件。 しかも非公開? つかなんで非公開タグが検索にひっかかっちゃうの?かな? だいぶ前から感じてたんだけど、今日調べたら非公開ブックマークなんだなと気がついたよ