У тебя не настроен как надо апач. Убери вообще нафиг keep-alive. Поменяй настройки для дочерних процессов.
MinSpareServers, MaxSpareServers - отвечают за минимум и максимум дочерних процессов в
ожидании. [1]
Т.к. судя по всему что у тебя апач дефолтный, то MaxClients означает для prefork максимальное кол-во дочерних процесов, если у тебя это значение в нуле, то они рождаются до бесконечности.
MaxRequestsPerChild - тут понятно, сколько запросов обрабатывает один дочерний процесс. [2]
В твоем случае, за всеми соединениями следит front-end nginx, его надо тоже настраивать [3]. Общение nginx - apache, в случае, если все на одной машине происходит практически молниеносно, поэтому keep-alive в данном случае для апача не нужен. Так же апачу не нужно иметь огромное кол-во дочерних процессов, т.к. если nginx еще и кэширует, то запросов к apache он делает намного меньше. Собственно, для этого nginx и создавался - снизить нагрузку на сервер за счет снижения кол-ва дочерних процессов apache.
allow tcp from any to me dst-port 80,443 setup keep-state
Эта запись не полная [4]. Keep-state лишь работает с check-state, предназачено для динамических правил в ipfw. [5]
Тебе файрволл можно не трогать вообще. Как выйдешь за предел в 10к соединений/с тогда можно будет что-то крутить.
Ref:
1. _http://httpd.apache.org/docs/2.0/mod/prefork.html
2. _http://httpd.apache.org/docs/2.0/mod/mpm_common.html
3. _http://adw0rd.ru/2009/nginx-and-apache-install/
4. _http://www.opennet.ru/openforum/vsluhforumID1/42434.html
5. _http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=32