Assuming you have enough RAM to serve the requests, and you are using the prefork multi-processing module, you can use the 2 directives MaxClients
and ServerLimit
to set the total number of simultaneous requests that will be served;
To check for prefork run apachectl -V | grep MPM
and look for the following output;
# apachectl -V | grep MPM
Server MPM: Prefork
-D APACHE_MPM_DIR="server/mpm/prefork"
The MaxClients directive sets the limit on the number of simultaneous requests that will be served.
Any connection attempts over the MaxClients limit will normally be
queued, up to a number based on the ListenBacklog directive. Once a
child process is freed at the end of a different request, the
connection will then be serviced.
But the ServerLimit
also puts a maximum limit on the number of processes that apache will spawn to serve requests.
For the prefork MPM, the ServerLimit directive sets the maximum configured value
for MaxClients for the lifetime of the Apache process..
hence I would go for something like;
ServerLimit 1000
MaxClients 1000
Alternatively for For the worker MPM, this directive in combination with ThreadLimit sets the maximum configured value for MaxClients for the lifetime of the Apache process. Any attempts to change this directive during a restart will be ignored
workers ThreadLimit docs here