Как увеличить максимальное количество одновременных подключений в Apache?

103

Какие настройки httpd conf мне нужно изменить, чтобы увеличить максимальное количество одновременных подключений для Apache? ПРИМЕЧАНИЕ. Я отключил KeepAlive, поскольку это в основном сервер API.

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive Off

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15

##
## Server-Pool Size Regulation (MPM specific)
## 

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
ДжонниДжон
источник

Ответы:

171

Вот подробное объяснение расчета MaxClients и MaxRequestsPerChild

http://web.archive.org/web/20160415001028/http://www.genericarticles.com/mediawiki/index.php?title=How_to_optimize_apache_web_server_for_maximum_concurrent_connections_or_increase_max_clients_in_apache

ServerLimit 16
StartServers 2
MaxClients 200
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25

Прежде всего, всякий раз, когда запускается apache, он запускает 2 дочерних процесса, что определяется StartServersпараметром. Затем каждый процесс запустит 25 потоков, определяемых ThreadsPerChildпараметром, это означает, что 2 процесса могут обслуживать только 50 одновременных подключений / клиентов, т.е. 25x2 = 50. Теперь, если появляется больше одновременных пользователей, запускается другой дочерний процесс, который может обслуживать еще 25 пользователей. Но сколько дочерних процессов может быть запущено, контролируется ServerLimitпараметром, это означает, что в приведенной выше конфигурации у меня может быть всего 16 дочерних процессов, причем каждый дочерний процесс может обрабатывать 25 потоков, в общей сложности обрабатывая 16x25 = 400 одновременных пользователей. Но если число, определенное в MaxClients, меньше, чем здесь 200, это означает, что после 8 дочерних процессов никакой дополнительный процесс не запустится, поскольку мы определили верхний пределMaxClients. Это также означает, что если я установлю MaxClientsзначение 1000, то после 16 дочерних процессов и 400 подключений ни один дополнительный процесс не запустится, и мы не сможем обслуживать более 400 одновременных клиентов, даже если мы увеличим MaxClientпараметр. В этом случае нам также нужно увеличить ServerLimitдо 1000/25, т.е. MaxClients/ThreadsPerChild=40 это оптимизированная конфигурация для клиентов сервера 1000

<IfModule mpm_worker_module>
    ServerLimit          40
    StartServers          2
    MaxClients          1000
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
Райсул
источник
24
Похоже, после версии 2.3.13 есть некоторые изменения. Например, MaxClients теперь MaxRequestWorkers.
ılǝ 02
2
Пожалуйста , посоветуйте: сайт связан в настоящее время служит вредоносные программы (и порно) ... Это, вероятно , взломан ... Довольно anoying если вы на работе поиска решения на StackOverflow и полный сайт взорван порно открывает ... sitecheck.sucuri. net / results / www.genericarticles.com
yoano
1
Хорошо, но каковы требования к памяти и процессору для этой оптимальной конфигурации. Или как мне принять во внимание процессор и память также для этой оптимизации.
indianwebdevil
Я применил эту конфигурацию, и все равно текущие соединения достигнуты ... кажется жестким пределом где-то еще
Хорхе Корнехо Беллидо