There are two methods of multiprocessing available on the vanilla Apache server: prefork and worker.
Prefork runs one process/job per request coming in. ThreadsPerChild doesn't come into play in this method.
Worker also causes multiple processes to start up, but each one is multithreaded. The limit on the number of threads each worker job can handle is the "ThreadsPerChild"
setting.
If you had Apache set to launch 30 jobs and ThreadsPerChild set to 100, you could handle 3000 concurrent connections.
________________________________________
From: web400-bounces@xxxxxxxxxxxx [web400-bounces@xxxxxxxxxxxx] on behalf of Nathan Andelin [nandelin@xxxxxxxxx]
Sent: Saturday, January 08, 2011 3:51 PM
To: Web Enabling the AS400 / iSeries
Subject: [WEB400] Apache Optimization
Kevin,
I don't know why Apache chose ThreadsPerChild for a directive name, or what they
might mean by a child process, but ThreadsPerChild determines the number of
threads that Apache uses for client communication, using sockets. You must have
already noticed that ThreadsPerChild causes multiple threads to be started in
one of the Apache jobs. That thread count is 7 + the ThreadsPerChild
setting. Unfortunately, ThreadsPerChild also controls the maximum number of CGI
jobs that may be started over time. Frankly, I wish there were separate
directives for each. CGI tuning under Apache is something of an oxymoron.
You're not the only one baffled by it. Actually, I think you understand the
problem better than most people because you went to the trouble of developing
your own dispatcher architecture. Right?
I'm a little constrained to say a much about why one of our clients is using a
ThreadsPerChild setting of 3000. I apologize if it added to the confusion. CGI
is actually just a small percentage of their overall workload.
-Nathan
-- from Kevin Turner --
I, for one, and a bit baffled by Apache configuration for optimum performance.
Most of the configuration is pretty self explanatory,like setting up SSL,
deflation, configuring for CGI etc etc, but this threadsPerChild setting seems
less obvious. The documentation talks about threads per child process. What is
a child process? How does a child process differ froma CGI thread? Is there a
formula for working out the best settings? You (Nathan) mention a
threadsPerChild of 3000, which is a massive difference from 100 running on a
very big box. There must be some detriment to setting it too high also?
Any Apache gurus out there?
--
This is the Web Enabling the AS400 / iSeries (WEB400) mailing list
To post a message email: WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at
http://archive.midrange.com/web400.
As an Amazon Associate we earn from qualifying purchases.