Cosa vedono gli utenti quando Apache raggiunge MaxClients?


8

Occasionalmente, nel mio registro degli errori di Apache, troverò:

[error] server reached MaxClients setting, consider raising the MaxClients setting

Ho abbassato di proposito MaxClients in passato (a 60) a causa di problemi con l'esaurimento della memoria, ma mi piacerebbe sapere esattamente cosa sta succedendo alla fine dell'utente quando questo limite viene raggiunto sul server. Il caricamento della pagina a cui accedono richiede solo più tempo? Ricevono una sorta di messaggio di errore?


1
Probabilmente non sarebbe difficile costruire un test per questo. In un server di prova, prova a far cadere MaxClients su 1 e vedi cosa succede quando aggiorni le cose in più finestre o schede.
ghoti,

Sicuramente - speravo che qualcuno lo sapesse prima di farlo. Non riesco a trovare alcuna informazione nella documentazione di Apache.
runningonplants

Risposte:


13

Inizialmente, le richieste del client verranno messe in coda, fino a quando non ci sarà un processo / thread che si libererà sul server apache. Quindi, i client vedranno un ritardo nel caricamento della pagina. Vedere la MaxClientsdocumentazione dei parametri per ulteriori informazioni.

Se inserita nella coda di backlog, la richiesta del client può eventualmente scadere sul lato client. Quindi l'utente vedrà una pagina di errore nel suo browser che dice che il server sta impiegando troppo tempo a dare una risposta. Ad esempio, il valore di timeout predefinito è 300 secondi in Firefox . Oppure l'utente annullerà la richiesta prima del timeout ...

Quindi, se il server riceve più richieste e non è in grado di ottenere un processo / thread gratuiti in tempo, la ListenBacklogcoda può essere riempita (per impostazione predefinita 511 richieste in coda) e qualsiasi richiesta successiva non verrà affatto soddisfatta. Il browser comunicherà quindi all'utente che non è possibile connettersi al sito Web, come se il sito Web fosse completamente inattivo.

Questa coda di backlog è gestita a livello di sistema operativo, nell'implementazione TCP. Sotto linux, la listenpagina man ti darà maggiori informazioni sul modo in cui è gestita. Ecco un'altra lettura molto approfondita sulla coda di backlog TCP nei sistemi Linux e BSD .


Esattamente quello che dovevo sapere. Grazie! Ti capita di sapere se c'è un modo per vedere quanti processi ci sono nella coda ListenBacklog?
runningonplants

1
Questa coda di backlog è gestita dal sistema operativo, come parte dello stack tcp. Dai un'occhiata alla listenpagina man. Non sono sicuro che ci sia un modo diretto per sapere cosa contiene questa coda. Vedi anche questa domanda SO . Ho aggiunto più informazioni alla mia risposta.
Tonin,
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.