Hi everyone,

We moved our Catalyst application to production servers yesterday and
seem to be getting lower than expected performance (around 9 req/s
between two load balanced servers).

On our development machine I ran myapp_server.pl through Devel::DProf,
hit it with a bunch of requests using ab, and got the following output:

%Time ExclSec CumulS #Calls sec/call Csec/c  Name
 9.86   3.378  3.378  21146   0.0002 0.0002  NEXT::ELSEWHERE::ancestors
 7.46   2.554  7.446  23695   0.0001 0.0003  NEXT::AUTOLOAD
 4.67   1.598  1.693 253442   0.0000 0.0000  URI::_generic::authority
 4.45   1.524  1.524 282912   0.0000 0.0000 I18N::LangTags::is_language_tag
 3.64   1.246 29.353   6736   0.0002 0.0044  Template::Document::__ANON__
 3.47   1.190  2.239   5052   0.0002 0.0004  Cache::Memcached::_load_multi
 3.36   1.150  1.226 223130   0.0000 0.0000  URI::_generic::path
 3.26   1.118  1.656 284605   0.0000 0.0000  URI::_scheme
 3.05   1.046  5.876  35365   0.0000 0.0002
Locale::Maketext::_langtag_munging
3.00 1.027 1.376 70728 0.0000 0.0000 I18N::LangTags::super_languages
 2.97   1.016  8.664  35365   0.0000 0.0002  Locale::Maketext::get_handle
 2.69   0.923  1.011 142308   0.0000 0.0000  URI::_init
 2.49   0.854 25.371 199554   0.0000 0.0001  Template::Stash::XS::get
 2.43   0.831  4.118  36207   0.0000 0.0001
I18N::LangTags::implicate_supers
 2.39   0.817  1.256  70728   0.0000 0.0000
I18N::LangTags::encode_language_ta

As expected, NEXT took up a fair amount of time at around 17%. I had read that Catalyst::Plugin::Class::C3 is worth checking out... should I try it? Should I be worried about the potential for bugs?

The biggest problem seems to be localization at ~18%. I had been using Catalyst::Plugin::I18N and calling Catalyst.localize() in our templates for any string that required localization. Is there a better method for doing localization, specifically with regards to performance?

URI is next up at around 14% of time. Is there anything that can be done about this one?

Lastly, Template seems to be taking up around 6%. I suppose I could try caching template output, but that will take some doing, as every page on our site can vary per user.

Thanks in advance to anyone who answers!
Jim

PS - It may be worth noting that on production, we are running Catalyst using myapp_fastcgi.pl through lighttpd.

_______________________________________________
List: Catalyst@lists.rawmode.org
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
Dev site: http://dev.catalyst.perl.org/

Reply via email to