I have changed the default configuration to:
<IfModule worker.c>
ServerLimit 20
StartServers 4
MaxRequestWorkers 600
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 30
MaxConnectionsPerChild 0
</IfModule>
And when in peak, using server-status, when it reaches 400 sessions, it still doesn't seem to create new workers and remains at 400:
BusyWorkers: 400
IdleWorkers: 0
Scoreboard: KKKKCKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKRKCKKKKKKCKKRKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKRKKKKKCKKKCKKKKKRKKKCKKKKKKCKKKKKKKKKKKKRCKKCKKKCKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKCKKKRKKKKKKKRKKKKKKKKKKKKKCKCKKKKKCKKKCKCKKRCRKKKKKKKKKKKKRKKKKKKKKKKKKKKCKKKKCKKKKKRKCCKKKKKKKKKKKKKKCKKKKKKKRKKKKKKKKKKCKKKCKKRKKCRKKRKKKKKKKKKKKKKCKKKKRKKKKRKKKKCKKKKKRKKKKKKKKKKKKKKKKKKKKRKKKKKKKWKKKKKKKKKKKCKKKK
If I change the user to apache and issue an ulimit -u i get 1024
Any ideas?
I finally figured out why Apache was not able to create more than 400 workers. It was because of the configuration file format. In our httpd.conf file the settings for worker and prefork modules are written just before the “LoadModule” section. It seems that apache does not like this format so it ignores our values for worker mode and falls back to the default values. The fix is very simple, we have to delete the settings for worker and prefork modules from above “LoadModules” section and put them after this section.
These values are optimal for 1000 simultaneous connections:
After that just stop/start apache process.