On Mon, Nov 10, 2008 at 11:45 AM, Issac Goldstand wrote:
> However, it's not necessarily better if your memory consumption goes
> mostly to run-time data which can't be pre-generated (in which case
> worker is better for the reasons listed below, since there's no COW benefit)

That's true if you're talking about data that you load into an
explicitly shared variable, but I have to say I have never seen that
scenario in real life. For almost everyone, the memory used by
lexical variables and code is the vast majority.

Every now and then someone comes along claiming that databases are too
slow for them and wanting to share a massive structure between apache
children. Those people should try threads (and probably compare to
prefork + BerkeleyDB).

> The reason that so many people like worker, I think, is because mp2 was
> designed so you can have workers shift from thread to thread, and be
> able to serve both mp and static content from the same Apache without
> losing performance, since not every child needs it's own "private"
> interpreter. This out-performs preform in almost every way... except
> memory sharing.

Well, I'd say it outperforms prefork in one way, which is that you
don't need a front-end proxy server and thus avoid that overhead. It
would be great to see some benchmark numbers on this. Unfortunately,
that gain is pretty much swamped by the reduced number of back-ends
you can run with threads due to the additional memory required.

- Perrin