Apache prefork module. Processes not being forked under heavy load

I have an apache prefork module http server running on linux machine. The machine has 8GB RAM. I have following in my /etc/httpd/conf/httpd.conf:

<IfModule prefork.c>     StartServers       8     MinSpareServers    5     MaxSpareServers   20     ServerLimit      512     MaxClients       512     MaxRequestsPerChild  4000 </IfModule> 

The problem is that no more child processes are getting forked after 256 and the requests are getting queued. I can see the number of child processes stuck at 256 under heavy load.

The average memory of a httpd process is aboout 3.69 MB.