Як збільшити максимальну кількість одночасних з'єднань в Apache?


102

Які параметри 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>

Відповіді:


170

Ось детальне пояснення щодо розрахунку 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

Перш за все, кожного разу, коли запускається апаш, він запускає 2 дочірні процеси, які визначаються StartServersпараметром. Тоді кожен процес запускатиме 25 потоків, визначених ThreadsPerChildпараметром, тому це означає, що 2 процес може обслуговувати лише 50 одночасних з'єднань / клієнтів, тобто 25x2 = 50. Тепер, якщо прийде більше одночасних користувачів, тоді розпочнеться ще один дочірній процес, який може обслуговувати ще 25 користувачів. Але скільки дочірніх процесів можна запустити, контролюється ServerLimitпараметром, це означає, що в конфігурації, наведеній вище, у мене може бути 16 дочірніх процесів, кожен дочірній процес може обробляти 25 потоків, в цілому обробляючи 16x25 = 400 одночасних користувачів. Але якщо число, визначене в MaxClients, менше, що тут становить 200, то це означає, що після 8 дочірніх процесів зайвий процес не почнеться, оскільки ми визначили верхню кришкуMaxClients. Це також означає, що якщо я встановив MaxClients1000, після 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ǝ

2
Будь ласка, порадьте: веб-сайт, на який посилаються, зараз обслуговує зловмисне програмне забезпечення (і порно) ... Це, мабуть, зламано ... Досить неприємно, якщо ви на роботі шукаєте рішення щодо stackoverflow і відкривається повноцінний порносайт ... sitecheck.sucuri. net / results / www.genericarticles.com
yoano

1
Гаразд, але для чого потрібна пам'ять і вимоги процесора для цієї оптимальної конфігурації. Або як я можу взяти до уваги процесор і пам'ять також для цієї оптимізації.
indianwebdevil

Я застосував цю конфігурацію, і все-таки діючі з'єднання досягнуті ... здається, що жорстке обмеження десь інше
Хорхе Корнеджо Беллідо

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.