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.