Apache'de maksimum eşzamanlı bağlantı sayısını nasıl artırırsınız?


103

Apache için maksimum eşzamanlı bağlantı sayısını artırmak için hangi httpd conf ayarlarını değiştirmem gerekiyor? NOT: KeepAlive'ı kapattım çünkü bu esas olarak bir API sunucusu.

#
# 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>

Yanıtlar:


171

MaxClients ve MaxRequestsPerChild hesaplamaları hakkında ayrıntılı bir açıklama burada.

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

Her şeyden önce, bir apache başlatıldığında, StartServersparametre ile belirlenen 2 çocuk süreci başlatacaktır . Daha sonra her işlem ThreadsPerChildparametre tarafından belirlenen 25 iş parçacığını başlatır, yani bu, 2 işlemin yalnızca 50 eşzamanlı bağlantıya / istemciye hizmet verebileceği anlamına gelir, yani 25x2 = 50. Şimdi daha fazla eşzamanlı kullanıcı gelirse, 25 kullanıcıya hizmet verebilecek başka bir alt süreç başlayacaktır. Ancak, kaç çocuk işlemin başlatılabileceği ServerLimitparametre tarafından kontrol edilir , bu, yukarıdaki yapılandırmada, toplamda 16 çocuk işlemin olabileceği anlamına gelir, her çocuk süreç 25 iş parçacığını işleyebilir, toplamda 16x25 = 400 eşzamanlı kullanıcıyla ilgilenebilir. Ancak MaxClients, burada tanımlanan sayı daha azsa, yani burada 200 ise, bu, 8 çocuk işlemden sonra, bir üst sınır tanımladığımız için hiçbir ekstra işlemin başlamayacağı anlamına gelir.MaxClients. Bu aynı zamanda MaxClients, 16 çocuk süreç ve 400 bağlantıdan sonra 1000 olarak ayarlarsam , hiçbir ekstra işlemin başlamayacağı ve MaxClientparametreyi artırmış olsak bile 400'den fazla eşzamanlı istemciye hizmet veremeyeceğimiz anlamına gelir . Bu durumda da ServerLimit1000/25 e yükseltmemiz gerekiyor yaniMaxClients/ThreadsPerChild=40 1000 / bu, sunucu 1000 istemcisi için optimize edilmiş yapılandırmadır.

<IfModule mpm_worker_module>
    ServerLimit          40
    StartServers          2
    MaxClients          1000
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

24
2.3.13 sürümünden sonra bazı değişiklikler var gibi görünüyor. Örneğin MaxClients artık MaxRequestWorkers oldu.
ılǝ

2
Lütfen tavsiye edin: bağlantılı site şu anda kötü amaçlı yazılım (ve porno) sunuyor ... Muhtemelen saldırıya uğramıştır
yoano

1
Tamam, ama bu optimum yapılandırma için gereken bellek ve CPU gereksinimleri nedir? Veya bu optimizasyonlar için CPU ve Belleği nasıl dikkate alacağım.
indianwebdevil

Bu yapılandırmayı uyguladım ve hala mevcut bağlantılara ulaşılıyor ... başka bir yerde zor bir sınır gibi görünüyor
Jorge Cornejo Bellido

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.