web-dev-qa-db-fra.com

Comprendre le "délai d'attente de 408 demandes" sur Apache avec PHP

Description du problème - Journaux Apache

J'ai trouvé des éléments similaires à celui-ci dans le fichier journal Apache:

166.147.68.243 [24/Feb/2013:06:06:25 -0500] 19 web-site.com "-" 408 - "-"

J'ai le format de journal personnalisé et 408 signifie ici le statut. Le format du journal est:

LogFormat "%h %t %D %V \"%r\" %>s %b \"%{User-agent}i\"" detailed

Et normalement, la ligne dans le fichier journal ressemble à

184.73.232.108 [26/Feb/2013:08:38:16 -0500] 30677 www.site.com "GET /api/search... HTTP/1.1" 200 205 "Zend_Http_Client"

C'est pourquoi 408 lignes d'erreur me paraissent étranges. Aucune demande n'est enregistrée et je n'ai aucune idée de ce qui devrait être optimisé.

Questions

Comment résoudre le problème? Quelles informations supplémentaires ou quels journaux devrais-je rassembler? Qu'est-ce qui pourrait causer le problème? Est-ce que quelque chose ne va pas sur le serveur? Ou est-ce absolument un problème de connectivité réseau?

Je réponds à cela parce que notre client s’est plaint de l’erreur 408 sur son téléphone portable. J'ai trouvé de nombreux enregistrements dans le fichier journal, mais je dois admettre que je ne sais pas quoi faire avec cela.


Mes propres recherches

Il y a déjà plusieurs questions sur ce sujet ici. Mais les gens sont beaucoup plus spécifiques. Ils discutent des problèmes avec certains logiciels clients et scripts. Ici, je viens de recevoir l'erreur lors de l'ouverture d'une page sur l'iPhone.

Par exemple, dans HTTP, le délai d'expiration de la demande 408 , il est suggéré de faire la demande GET avant le POST. Si j'ai un client personnalisé, je peux le faire. Mais je ne peux pas contrôler le comportement du navigateur de l’utilisateur.

Devinez # 1

En cherchant sur Internet et en réfléchissant au problème que j'ai trouvé https://serverfault.com/questions/383290/too-many-408-errorcodes-in-access-log

Nous vous suggérons de remettre le paramètre Timeout config à sa valeur par défaut.

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

J'ai essayé la valeur 30 en premier parce que je pensais que 30 secondes devraient suffire. Mais même avec la valeur par défaut de 300 secondes, je continue d’obtenir les erreurs dans le journal. J'ai fait tail -f quand j'écrivais ce texte et j'ai reçu plus de 10 lignes en quelques minutes.

Pour moi, cela ne semble pas une solution complète.

13
Victor Smirnov

Après quelques études sur le sujet, je suis arrivé à la réponse suivante. Il est fourni par notre développeur principal et je pense que cela donne une bonne explication du sujet.

Ces erreurs sont parfaitement normales. Ils ne sont pas le signe d’un problème plus important, mais des connexions normales qui maintiennent Apache ouvert plus longtemps qu’autorisé.

Par exemple, les requêtes du client les exécutant maintes et maintes ont maintenu Apache ouvert. Apache a répondu en le fermant convenablement.

Si ce n'était pas le cas, une poignée de personnes pourrait s'emparer de notre serveur et ne permettre à personne d'autre de se connecter.

Le plus souvent, ces erreurs proviennent de systèmes à la recherche d'exploits. Vous pouvez les recréer en ouvrant une session telnet et en la laissant ouverte.

En même temps, suivez le journal des accès et, dans un délai X (KeepAliveTimeout), vous verrez apparaître votre adresse IP contextuelle avec les mêmes codes d'erreur.

À l'époque d'Apache 1.3, cette erreur était courante, mais la version 2.2 est sortie et a été supprimée jusqu'à ce qu'un nombre suffisant d'entre nous demande de la retourner, car cela nous donne une idée du nombre de personnes qui s'ouvrent juste au port, et ne pas demander une ressource réelle, etc.

Je pense que rien d’autre ne devrait être fait ici, si ce n’est pour s’assurer de régler Timeout à une valeur raisonnable, comme je l’ai décrit dans la question initiale.

10
Victor Smirnov

S'il existe un proxy configuré dans Apache et que le serveur principal ne répond pas rapidement pour une raison quelconque, le même 408 - - sera visible dans les journaux. Les délais d’exécution de proxy sont configurés séparément, c’est pourquoi la modification du délai d’exécution par défaut d’Apache ne semble pas avoir d’effet sur ces demandes.

0
M K

En réalité, beaucoup de messages dans les journaux Apache constituent un mécanisme de prélecture dans les navigateurs modernes. D'après les journaux Apache des 3 dernières années, le nombre d'erreurs 408 a plus que doublé pour le même trafic.

0
Ron