>
>
> The good thing about Apache is it's dynamic rescaling - which isn't as easy
> with starman - if you have a large code base the spin up time for starman can
> be quite large as it appears (to make it efficient) load in every bit of code
> that the application needs - even if it is one of those small edge cases.
>
> So yes use starman for simple apps if you need to, but for complex stuff I
> find mod_perl setup more reliable.
Even Apache has a maximum number of instances. If you’re prepared to let your
Apache+mod_perl use up to say 300 concurrent Perl instances, you just set up
your starman instance to pre-fork 300 concurrent instances. Your hardware will
always impose concurrency limits. You should always be able to achieve the same
performance with mod_perl and Starman as Perl is fundamentally single-threaded.
Separating the front-end proxy (Apache or Nginx) from the back-end application
(Perl app running under starman) is a simplification and a separation of
concerns, not a performance gain or penalty.
If you use unix domain sockets for the proxying you can even get zero-downtime
application restarts.
mod_perl is great for weird, special cases, like supporting some legacy, 3rd
party code, but I don’t believe it’s the best option for the common case.
- Mark