Que voient les utilisateurs quand Apache atteint MaxClients?

8

Parfois, dans mon journal des erreurs Apache, je trouve:

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

J'ai volontairement réduit MaxClients dans le passé (à 60) en raison de problèmes de manque de mémoire, mais j'aimerais savoir exactement ce qui se passe du côté de l'utilisateur lorsque cette limite est atteinte sur le serveur. La page à laquelle ils accèdent prend-elle plus de temps à charger? Obtiennent-ils une sorte de message d'erreur?

des plantes
la source
1
Il ne serait probablement pas difficile de construire un test pour cela. Dans un serveur de test, essayez de laisser tomber MaxClients à 1 et voyez ce qui se passe lorsque vous actualisez des choses dans plusieurs fenêtres ou onglets.
ghoti
Certainement - j'espérais que quelqu'un le saurait avant de faire ça. Je ne trouve aucune information dans la documentation d'Apache.
runningonplants

Réponses:

13

Au début, les demandes des clients seront mises en file d'attente, jusqu'à ce qu'un processus / thread soit libéré sur le serveur apache. Ainsi, les clients verront un retard dans le chargement de la page. Voir la MaxClientsdocumentation des paramètres pour plus d'informations.

Lorsqu'elle est placée dans la file d'attente du backlog, la demande client peut éventuellement expirer côté client. Ensuite, l'utilisateur verra une page d'erreur dans son navigateur indiquant que le serveur prend trop de temps pour donner une réponse. Le délai d'expiration par défaut est de 300 secondes dans Firefox , par exemple. Ou l'utilisateur annulera la demande avant l'expiration ...

Ensuite, si le serveur reçoit plus de demandes et ne peut pas obtenir un processus / thread libre à temps, la ListenBacklogfile d'attente peut être remplie (par défaut, 511 demandes en file d'attente) et toute demande ultérieure ne sera pas servie du tout. Le navigateur indiquera alors à l'utilisateur qu'il ne peut pas se connecter au site Web, comme si le site Web était complètement hors service.

Cette file d'attente de backlog est gérée au niveau du système d'exploitation, dans l'implémentation TCP. Sous linux, la listenpage de manuel vous donnera plus d'informations sur la façon dont elle est gérée. Voici une autre lecture très intéressante sur la file d'attente de backlog TCP dans les systèmes Linux et BSD .

Tonin
la source
Exactement ce que je devais savoir. Je vous remercie! Savez-vous par hasard s'il existe un moyen de voir combien de processus se trouvent dans la file d'attente ListenBacklog?
runningonplants
1
Cette file d'attente de backlog est gérée par le système d'exploitation, dans le cadre de la pile TCP. Jetez un œil à la listenpage de manuel. Je ne suis pas sûr qu'il existe un moyen direct de savoir ce que contient cette file d'attente. Voir également cette question SO . J'ai ajouté plus d'informations à ma réponse.
Tonin