Come si aumenta il numero massimo di connessioni simultanee in Apache?


102

Quali impostazioni di configurazione httpd devo modificare per aumentare il numero massimo di connessioni simultanee per Apache? NOTA: ho disattivato KeepAlive poiché si tratta principalmente di un server 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>

Risposte:


170

Ecco una spiegazione dettagliata sul calcolo di MaxClients e MaxRequestsPerChild

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

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

Prima di tutto, ogni volta che viene avviato un apache, avvierà 2 processi figli determinati dal StartServersparametro. Quindi ogni processo avvierà 25 thread determinati dal ThreadsPerChildparametro, quindi questo significa che 2 processi possono servire solo 50 connessioni / client simultanei, ad esempio 25x2 = 50. Ora, se arrivano più utenti simultanei, verrà avviato un altro processo figlio, che può servire altri 25 utenti. Ma il numero di processi figlio che possono essere avviati è controllato dal ServerLimitparametro, ciò significa che nella configurazione sopra, posso avere 16 processi figlio in totale, con ogni processo figlio in grado di gestire 25 thread, in totale gestione 16x25 = 400 utenti simultanei. Ma se il numero definito in MaxClientsè minore che è 200 qui, significa che dopo 8 processi figli, nessun processo aggiuntivo inizierà poiché abbiamo definito un limite superiore diMaxClients. Ciò significa anche che se imposto MaxClientsa 1000, dopo 16 processi figli e 400 connessioni, non verrà avviato alcun processo aggiuntivo e non potremo servire più di 400 client simultanei anche se abbiamo aumentato il MaxClientparametro. In questo caso, dobbiamo anche aumentare ServerLimita 1000/25, cioè MaxClients/ThreadsPerChild=40 questa è la configurazione ottimizzata per il server 1000 client

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

24
Sembra che ci siano alcuni cambiamenti dopo la versione 2.3.13. Ad esempio MaxClients è ora MaxRequestWorkers.
ılǝ

2
Si prega di avvisare: il sito collegato attualmente sta servendo malware (e porno) ... Probabilmente è stato violato ... Abbastanza anoying se sei al lavoro alla ricerca di una soluzione su StackOverflow e si apre un sito porno in piena regola
yoano

1
Va bene, ma qual è la memoria richiesta e i requisiti della CPU per questa configurazione ottimale. O come prendo in considerazione CPU e memoria anche per queste ottimizzazioni.
indianwebdevil

Ho applicato questa configurazione e ancora le connessioni attuali sono raggiunte ... sembra un limite difficile da qualche altra parte
Jorge Cornejo Bellido

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.