[Catalyst] Catalyst Performance issues

Wade.Stuart at fallon.com Wade.Stuart at fallon.com
Mon Oct 9 17:20:07 CEST 2006





Are you setup for caching the compiled templates?  These should be set to
some sane value in TT options:


CACHE_SIZE

COMPILE_EXT

COMPILE_DIR



Also,  you do not have EVAL_PERL set do you?  I have seen huge performance
drops on setups that have that tagged.





Wade


catalyst-bounces at lists.rawmode.org wrote on 10/07/2006 09:44:17 AM:

> Hi everyone,
>
> Recently I've been facing some performance issues in my Catalyst
> application and the situation worries me a little bit.
>
> The first optimization I tried was to start prefetching everything I
> could and it indeed improved the performance quite a bit (by a factor
> of 2 or so). But it still isn't enough.
>
> I've got pages that take 3-4 seconds to render with a single user
> using the application while the database query takes something between
> 0.15-0.20s to complete. Whenever the application faces a moderate
> amount of usage, users start complaining.
>
> So, in my quest for optimization, I tried profiling my Catalyst
> application. It saddened me a little bit to find out that, apparently,
> at least 60% of the time (probably more) is spent inside Catalyst, TT
> and DBIC internal routines (a big cycle eater is Class::C3).
> Particularly, URI handling seems to take a lot of time (maybe this was
> influenced by the fact that I profiled using the builtin server).
>
> I'd like to know if there are any performance tips or really just how
> do you get acceptable performance from your Catalyst application in
> moderately complex or large pages (especially regarding pages where
> there might be hundreds or records fetched from the database).
>
> Thanks for any help and just in case it might be useful in order to
> diagnose what I could've done wrong, here's the profiling output of
> "dprofpp -R -O 50" for my application:
>
> Total Elapsed Time = 298.9974 Seconds
>   User+System Time = 44.42747 Seconds
> Exclusive Times
> %Time ExclSec CumulS #Calls sec/call Csec/c  Name
>  7.52   3.341  0.010  33082   0.0001 0.0000  next::method
>  7.00   3.109 38.560  86056   0.0000 0.0004  Template::Stash::XS::get
>  6.32   2.809  3.041   5163   0.0005 0.0006  DBIx::Class::
> ResultSet::_collapse_
>                                              result
>  3.78   1.680  5.675  18010   0.0001 0.0003  URI::_generic::abs
>  3.05   1.357  1.581  63205   0.0000 0.0000  URI::_generic::authority
>  2.98   1.325  2.958  36156   0.0000 0.0001  URI::new
>  2.69   1.194  1.296  54137   0.0000 0.0000  URI::_generic::path
>  2.37   1.052 12.538   9005   0.0001 0.0014  Catalyst::uri_for
>  2.27   1.008  1.647  72169   0.0000 0.0000  URI::_scheme
>  2.16   0.959  1.247    174   0.0055 0.0072  Class::C3::
> _calculate_method_dispa
>                                              tch_table
>  2.09   0.930  0.930   5128   0.0002 0.0002  Template::Stash::clone
>  1.87   0.833  0.939  36156   0.0000 0.0000  URI::_init
>  1.84   0.819  0.819 115481   0.0000 0.0000  DBIx::Class::
> AccessorGroup::get_si
>                                              mple
>  1.77   0.785  0.908   9256   0.0001 0.0001  Params::Validate::_validate
>  1.69   0.751  4.116  11295   0.0001 0.0004
DBIx::Class::Row::inflate_result
>  1.54   0.686  2.718   2649   0.0003 0.0010  DateTime::new
>  1.36   0.605  0.621    250   0.0024 0.0025  Algorithm::C3::merge
>  1.24   0.550  0.853   3748   0.0001 0.0002
DBIx::Class::ResultSet::search_rs
>  1.20   0.533  4.199  32805   0.0000 0.0001  DBIx::Class::
> InflateColumn::get_co
>                                              lumn
>  1.19   0.527  0.527   1260   0.0004 0.0004  NEXT::ELSEWHERE::ancestors
>  1.13   0.504 18.551      3   0.1679 6.1838
Template::Document::__ANON__(9e3)
>  1.08   0.482 45.518   1356   0.0004 0.0336  NEXT::AUTOLOAD
>  1.07   0.476  0.476  16836   0.0000 0.0000  Template::Stash::XS::set
>  1.04   0.460  1.743   9029   0.0001 0.0002  URI::_server::canonical
>  0.99   0.439 13.844      5   0.0878 2.7688
Template::Document::__ANON__(8d0)
>  0.94   0.416  0.416  27151   0.0000 0.0000  URI::implementor
>  0.83   0.368  0.368  46161   0.0000 0.0000  Scalar::Util::blessed
>  0.81   0.362  0.538  11724   0.0000 0.0000  DBIx::Class::Schema::source
>  0.79   0.350  0.468     35   0.0100 0.0134  Template::Parser::_parse
>  0.77   0.341  4.838    898   0.0004 0.0054
Template::Document::__ANON__(91f)
>  0.76   0.339  0.420   3645   0.0001 0.0001  DBIx::Class::
> ResultSet::_resolved_
>                                              attrs
>  0.76   0.338  1.853  63059   0.0000 0.0000  URI::scheme
>  0.75   0.331  1.998   3532   0.0001 0.0006  DBIx::Class::
> Relationship::Base::r
>                                              elated_resultset
>  0.74   0.328  2.325   9029   0.0000 0.0003  URI::http::canonical
>  0.73   0.326  0.326  27112   0.0000 0.0000  URI::_generic::_check_path
>  0.69   0.307  8.311   3213   0.0001 0.0026  DBIx::Class::ResultSet::next
>  0.69   0.307 42.798   1057   0.0003 0.0405  Template::Context::process
>  0.64   0.286  6.734      3   0.0955 2.2447
Template::Document::__ANON__(97f)
>  0.62   0.277  0.363   5726   0.0000 0.0001  DBIx::Class::ResultSet::new
>  0.58   0.256  0.256  27040   0.0000 0.0000  URI::clone
>  0.58   0.256  0.569   9054   0.0000 0.0001  URI::_server::host
>  0.54   0.241  0.433   4450   0.0001 0.0001  DateTime::_calc_utc_rd
>  0.52   0.233  3.289   2612   0.0001 0.0013  DateTime::Format::
> Builder::Parser:
>                                              :generic::__ANON__(8c9)
>  0.52   0.233  0.854   4451   0.0001 0.0002  DateTime::TimeZone::new
>  0.50   0.224  0.365   9054   0.0000 0.0000  URI::_server::_port
>  0.48   0.212  0.212   9072   0.0000 0.0000  URI::_query::query
>  0.47   0.210  0.430  35011   0.0000 0.0000  DBIx::Class::
> AccessorGroup::__ANON
>                                              __(3d5)
>  0.47   0.210  0.210    174   0.0012 0.0012  Class::C3::
> _remove_method_dispatch
>
> -Nilson Santos F. Jr.
>
> _______________________________________________
> List: Catalyst at 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/




More information about the Catalyst mailing list