On 30 Jun 2009, at 11:58, Alejandro Imass wrote:

Hi! Sorry for the lethargy, I've buried in a project and just recently
saw the light of day :-)

Yes, you  are correct [Tomas], BUT it all depends on the type of
application. Web concurrency is often misinterpreted. The application
I was referring to needs the ability to have many, many concurrent
processes waiting for a response from another service which has a long
response time. So in this case, having many, many threads sitting
there waiting for a response is the way to go.

You're doing it wrong.

Don't block app server threads on a remote service if you have a slow remote service, the only thing that lies down that route is doom and fail.

Use a job queue or something so that your application servers don't sit waiting for slow remote services.

If you really actually need to block architecturally, then a heavy weight application server is just the wrong solution, full stop.

I'm sure that the worker mpm will give you more headroom if you have loads of mod_perl processes blocking than prefork, but I very much consider this to be an optimisation, not a solution.

That said, I'm not trying to be disparaging, and I'm happy this works for you, and is a viable option :)

The one thing that worries me about this is that it uses threads, and threads and perl don't get on.. For example, Moose's string style type constraints are a bad world (because the regex used makes various versions of at least perl 5.8 core dump). I don't think that this is an issue for anything in the Catalyst stack, as we're either type-constraint free, or use exclusively MooseX::Types stuff (which doesn't use those regular expressions, and therefore is safe, I think) - but may be a problem for other code..

I can certainly remember an un-fun world of apache puking it's guts on a coworker's machine as he was using the worker mpm..

So YMMV, depending on what portion of CPAN you use, and/or what your codebase looks like... :-/

This is a very interesting diverse and complex subject, but the main
idea of my post was to state that Catalyst works well under
multi-threaded Apache with mod_perl, allowing, _in some cases_ better
usage of the available resources. It does not apply, of course, to all
cases, and your insight explains this very well.

Indeed - it all very much depends on the application & load profile etc - so all of this is just painting the bike shed, unless we're discussing a specific application on a real (i.e. something like production) set of hardware, and have actual performance metrics we want to ensure it fulfill. :)

BTW, Ashley suggested I write a how-to on the WIki or something like
that. Could some suggest exactly where, and I may have time to that
this week.

http://dev.catalyst.perl.org/wiki/deployment

Making a section linked from 'Apache' in there, briefly outlining your config and what benefits you get from doing mod_perl this way would be great :)

Cheers
t0m


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

Reply via email to