IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Latences requêtes http


Sujet :

Apache

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Par défaut Latences requêtes http
    Bonjour,

    J'obtiens un problème de latences, non régulières, aléatoires, plutôt rares, lors de l'accès au portail d'un intranet.
    Par latences, j'entends plutôt de requêtes http sans réponses...
    Pas d'erreur 404, rien, ça tourne en boucle indéfiniment. On a testé à plus de 5 minutes. On rafraichit la page, hop résultat instantané.
    Il n'y a pas d'erreur dans le code. Au niveau ressources serveur, il y a encore de la marge, on n'excède pas 10%..

    Le problème n'intervient pas pour tous en même temps, mais arrive à tous les clients.

    Cette appli possède son propre nom de domaine, configuré dans le vhost.
    Un alias est posé sur phpmyadmin, qui a lui aussi le problème d'ailleurs.

    A l'initial lors d'une période de tests, le reverse dns était configuré dans le fichier host de l'os des quelques clients qui y accédaient.
    Le problème apparaissait déjà.
    Bref le nombre de clients évoluant, j'ai alloué le reverse dns à la box.
    Le problème persiste toujours.

    Peu importe le nombre d'utilisateur. Comme ça, sans raison, une fois de temps en temps, les requêtes http se perdent dans la nature.

    Je pensais vraiment à un problème de reverse à la base mais il semble que ce ne soit pas le cas.
    J'ai fait un audit pendant plusieurs jours, en sniffant le réseau sur le serveur ainsi qu'un client.
    Il semble que toutes les requêtes atteignent bien le serveur, mais je ne suis pas certain qu'elles atteignent bien le serveur web.
    Pas grand chose au niveau des logs, et le problème est difficilement reproductible... J'ai calé un stagiaire à cliquer toute une journée un peu partout et il n'a pas eu de souci....

    J'ai pensé à un problème de connexion en simultanée par utilisateur vers le serveur. Par défaut à 2, je l'ai passé à 3 sachant qu'on ne dépasse jamais les 2.
    Rien n'y fait.

    Alors là je m'interroge. Je n'ai jamais eu ce problème là auparavant.
    Un problème matériel au niveau du serveur ?
    Je l'ai mal configuré ?
    Un problème de version de php, apache ou je ne sais ?
    (Je ne sais pas si je poste au bon endroit en passant)

    Le serveur :
    proc AMD FX 6100
    Windows 2008 R2 entreprise x64
    Wamp version 2.2 x64
    Php version 5.4.3
    Apache version 2.4.2
    Mysql version 5.5.24

    Quelqu'un aurait-il une solution à proposer, ou au moins une idée vers où diriger mes recherches ?

    Merci par avance.

  2. #2
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    T'as une base de données derrière ton/tes applis ?
    T'as peut-être un souci de connexions non déconnectées sur ta base et du coup un engorgement.

    Lors de l'engorgement, le code appli attends que de nouvelles connexions soient possibles pour continuer son traitement et afficher la page.

    Ça a donc en général ce genre de symptôme....

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Par défaut
    Bonjour et merci de la réponse.

    Oui il y a des bases.

    PDO est utilisé sur toutes les applis, géré grâce à une classe spécifique. Les connexions ne sont pas fermées mais sachant que l'objet est détruit en fin de script, ça devrait être bon non ? Qui plus est, peu importe la lourdeur des scripts (la plupart sont légers).

    Le problème est également apparent dans phpmyadmin qui plus est.

    Ah mais j'y pense, une précision omise, j'ai fait un test sur un hébergeur mutu pendant quelques jours (en prod à plusieurs dessus), et tout roule nickel.

    Je pencherai plus (sans vraiment savoir) vers un problème réseau ou de config du serveur, peut-être de matériel genre la ram ? (Je ne sais pas, pourquoi pas...)

  4. #4
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Salut,

    - Il y a quoi entre ton serveur Web et ton client ? Un , plusieurs switch ?

    - Tu as essayé d y accéder depuis une autre machine ? Depuis une machine sur le coeur de réseau ?

    - Grâce à la console onglet Réseau d'un Firebug ou d'un analyseur quelconque intégré à un navigateur, tu peux voir les détails de tes GET de transmission dans tes requêtes vers le serveur.

    - Regarde également du côté des logs de ton serveur Web pour voir si il ne génère aucun avertissements (apparament tu l'as déjà fait)

    - Vérifie aussi si y a un parefeu (iptables, apf ..) ou autre sur la machine serveur et client, ou un antivirus qui ferait du contrôle sur accès en temps réel mal optimisé.

    -Surveille ton port 80 sur ton serveur et regarde tes modules activés sur apache, peut-être qu'il y'en a que tu n'utilises pas et qui sont lourds

    Si tu ne trouves rien tu peux également activer le module de compression HTTP d'Apache, qui peut faire gagner jusqu'à 75% de perfs !
    Dans ce cas regarde du côté de mod_deflate.
    Apache permet aussi de régler la mise en cache avec mod_expires et mod_headers. On peut aussi utiliser la mise en cache côté serveur, dans laquelle le contenu le plus souvent affiché est stocké en mémoire, ce qui permet sa prise en charge rapide.Pour finir le module mod_cache pourrait te servir à la mise en cache côté serveur.

    Voila bon courage pour trouver la source de ton problème, voici quelques pistes et astuces, je suis en attente de plus de précisions de ta part.

    EDIT : Pour le parefeu, désolé j'avais pas lu que tu etait sous Windows. Bon du coup oublie juste iptables et apf sur mon post, merci

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Pas 36 approches possibles à mon avis : faire des captures réseau depuis un client qui rencontre le problème et le serveur, les 2 au même moment lorsque le problème survient. Hyper facile à faire

    Il se peut que le réseau soit en cause, truc très facile à déboguer. Par exemple les requêtes peuvent très bien ne jamais parvenir au serveur. Pour savoir si c'est Apache qui plante, tu peux a priori t'appuyer en toute confiance sur les logs d'Apache : il y aura forcement une trace de la requête entrante dans l'access_log si la requête est parvenue jusqu'à Apache. Donc si tu connais l'IP de la machine qui a fait la requête, la requête (GET, POST, etc.) et l'heure à laquelle il y a eu plantage, tu devrais retrouver des traces dans l'access_log.

    Chose à faire absolument si tu soupçonnes des pbs de perf Apache : ajoute le flag %D dans les traces d'accès pour connaitre le temps mis par Apache pour répondre aux requêtes. Si tu vois des temps très longs ponctuellement et au moment des plantages, Apache est en cause. Restera plus qu'à identifier pourquoi mais au moins le problème aura été localisé.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Par défaut
    Bonjour et merci de vos réponses.

    @Vespiras,
    1) Selon le client, il y a un ou plusieurs switch (le réseau est une horreur en passant...)

    2) Je ne suis pas sur de comprendre ta question ? Actuellement, une dizaine de machines clientes se connectent sur ce serveur.

    3) Je vais voir de ce côté-ci merci. Bien que je l'ai fait en capturant les trames avec wireshark (serveur + 1 client) pendant plusieurs jours.

    @_Mac_,
    Bien en fait, je l'ai déjà fait. Mais je vais repartir sur une session d'une semaine cette fois, et un peu plus automatisée. J'ai codé un script (js) qui effectue une requête ajax toutes les minutes sur le serveur avec un très long timeout. Si la requête passe, je récupère l'heure du serveur, si elle ne passe pas, le script me génère une erreur. Donc entre une erreur, je devrais avoir 2 dates valident me permettant de situer un peu plus facilement la requête... à raison de 1440 tentatives/jour, sur une semaine, le problème devrait être plus facilement reproductible, et me permettre de voir sur plusieurs erreurs.

    Je reviens vers vous une fois que j'en saurai plus.

    Et merci encore, vous m'avez appris quelques petites astuces sympa au passage

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Par défaut
    Bonjour,

    Bon et bien le script a tourné une 10aine de jours sans obtenir une seule erreur
    Problème difficilement reproductible, je n'en sais pas plus ni ne sais quoi dire de plus....
    J'y reviendrai au retour des vacances.

    Merci encore

Discussions similaires

  1. Parser une requête HTTP/GET en c ! regex ?
    Par canard75 dans le forum C
    Réponses: 14
    Dernier message: 06/12/2005, 10h08
  2. [Struts] Ecouter des requêtes HTTP
    Par ledruide dans le forum Struts 1
    Réponses: 16
    Dernier message: 01/12/2005, 11h53
  3. Intercepter les requêtes HTTP et les modifier.
    Par Alexandre T dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 21/09/2005, 19h25
  4. Requête HTTP
    Par hogan dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 15/07/2005, 18h44
  5. [HTTP]Créer une requête http multipart/related
    Par jothi35 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/04/2005, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo