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

Langage PHP Discussion :

problème de timeout avec apache et php


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Août 2012
    Messages : 22
    Par défaut problème de timeout avec apache et php
    Bonjour,

    Je rencontre un problème de timeout, qui intervient au bout de 5s.

    Je vous indique l'architecture

    Un script shell tourne sur une redhat linux et un serveur web (apache like : ibm http server) sert ce script via l'activation des cgi , et renvoie le json qu'il génère.
    En local, que cela soit en lançant le script ou en faitsant un curl vers le serveur web lançant le script, le résultat arrive bien, en 9s environ.

    En surcouche j'utilise un serveur apache sur mon poste de travail windows seven, avec php installé (easyphp pour être précis).
    Dans un de mes scripts php sur ce serveur web local, je fais appel à l'url surcitée, et au bout de 5s je me prend la page ... en fait un tableau vide ... puisque vous vous en doutez en 5s on ne récupère pas le résultat json d'un script qui met ... 9s à s'exécuter (pour info c'est un schell script d'analyse de filesystem).

    Je ne rencontre ce problème que sur deux machines (sur 15) ou le shell est installé, et encore seulement sur un fs de chaque machine, sinon le résultat revient bien en moins de 5s.

    Mais donc, pour résoudre ce problème de timeout, j'ai cherché du coté du httpd.conf de l'apache, du php.ini de php, et malgré les évolutions, le comportement ne change pas, au bout de 5s mon serveur web local me rend la main et n'attend pas les 9s pour récupérer le json tant souhaité ^^

    Modifications effectuées (sans effet) :

    1) httpd.conf de mon apache :

    KeepAlive On
    KeepAliveTimeout 30
    RequestReadTimeout header=30 body=30

    2) php.ini de mon easy.php

    set_time_limit 30
    max_execution_time 30

    Cela donne donc pour mon phpinfo() :

    Max Requests Per Child: 0 - Keep Alive: on - Max Per Connection: 100
    Timeouts Connection: 60 - Keep-Alive: 30

    Mais rien n'y fait, la requête dure 5s et me sert ... un 200 fier et joyeux avec aucune data (qui serait arrivée au bout de 9s) ... grrr ... je sais qu'un paramètre me manque mais j'ai besoin d'aide car je n'ai plus de recul, et je sèche là :-(

    scenario avec Urls :

    http://romegonic/monitoring/analyse_.../app/list/data (romegonic est le fqdn de mon serveur web local)
    appelle :
    http://ld002mid7074.cloud.group.gca/.../app/list/data
    qui lance :
    analyse_fs.sh?/app/list/data

    Je rappelle que ce script fonctionne pour tous les autres filesystem, en local (sh ou curl), et même en curl à partir de mon poste de travail !
    Donc c'est bien la surcouche apache/php de mon poste de travail qui provoque ce timeout précoce.

    Si quelqu'un connaît une directive a activer (ou désactiver) sur apache ou php, pour augmenter ce temps d'attente, merci beaucoup par avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Qu'on soit d'accord sur la description du problème :
    - tu as 15 machines ayant un serveur web et un script shell
    - depuis une machine windows, tu interroges ces machines
    - Tu obtiens une anomalie avec certains paramètre (filesystem) pour 2 de ces machines, des résultats normaux pour ces 2 même machines avec d'autres paramètres, et des résultats normaux pour les 13 autres machines quelque soit le paramètre ?

    Par contre je trouve que tu conclues trop vite à un problème de timeout.
    Il ne faut pas oublier qu'ici ta machine windows agit comme client de ton serveur linux ; la configuration du serveur apache easyphp ne devrait donc pas intervenir.
    Du côté de PHP sans savoir ce que tu fais exactement pour interroger le serveur et comment tu analyses le résultat, difficile de t'en dire plus.
    Pense à regarder sur le serveur web linux les logs de connexions pour voir quel type de réponse est fournie.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Août 2012
    Messages : 22
    Par défaut
    Bonjour,

    Alors d'abord merci pour ta première réponse.

    En fait j'ai testé les actions suivantes :

    1) Lancement du script directement sur la redhat :
    ===============================
    ld002mid7074@mid:/tools/list/product/websphere70/httpserver/cgi-bin/monitoring >date +%s
    1447836757
    ld002mid7074@mid:/tools/list/product/websphere70/httpserver/cgi-bin/monitoring >./analyse_fs.sh /app/list/data
    Content-type: text/plain

    {"fs":"/app/list/data","taille":"60227676","nombre_fichiers":"604351","repertoires volumineux":[{"/app/list/data/depot":"22307672"},{"/app/list/data/depot/Archives_EAR":"13656844"},{"/app/list/data/installedApps":"3102320"},{"/app/list/data/installedApps/CellBase":"3102316"},{"/app/list/data/depot/gzArchives":"2002040"},{"/app/list/data/tools":"1829376"},{"/app/list/data/tools/admin":"1828196"},{"/app/list/data/tools/admin/was70":"1828188"},{"/app/list/data/tools/admin/was70/PM":"1821472"},{"/app/list/data/installableApps":"1576804"}],"gros fichiers":[{"/app/list/data/installableApps/sippint.ear":"254561326"},{"/app/list/data/depot/Archives_EAR/sippint.ear.1":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.3":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.10":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.9":"254561324"},{"/app/list/data/depot/Archives_EAR/sippint.ear.2":"254561327"},{"/app/list/data/depot/Archives_EAR/sippint.ear.4":"254561326"},{"/app/list/data/depot/Archives_EAR/sippint.ear.5":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.7":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.6":"254561324"},{"/app/list/data/depot/Archives_EAR/sippint.ear.8":"254561324"},{"/app/list/data/installableApps/scprec.ear":"224139031"},{"/app/list/data/depot/Archives_EAR/scprec.ear.1":"224133207"},{"/app/list/data/depot/Archives_EAR/scprec.ear.2":"224133190"},{"/app/list/data/depot/Archives_EAR/scprec.ear.3":"224133132"}]}

    ld002mid7074@mid:/tools/list/product/websphere70/httpserver/cgi-bin/monitoring >date +%s
    1447836768

    => 11 secondes le temps de taper le 2ème date +%s

    2) Lancement d'un curl, toujours en local sur la redhat :
    ==================================
    ld002mid7074@mid:/tools/list/product/websphere70/httpserver/cgi-bin/monitoring >date +%s
    1447836914
    ld002mid7074@mid:/tools/list/product/websphere70/httpserver/cgi-bin/monitoring >curl http://ld002mid7074.cloud.group.gca/.../app/list/data
    {"fs":"/app/list/data","taille":"60227676","nombre_fichiers":"604351","repertoires volumineux":[{"/app/list/data/depot":"22307672"},{"/app/list/data/depot/Archives_EAR":"13656844"},{"/app/list/data/installedApps":"3102320"},{"/app/list/data/installedApps/CellBase":"3102316"},{"/app/list/data/depot/gzArchives":"2002040"},{"/app/list/data/tools":"1829376"},{"/app/list/data/tools/admin":"1828196"},{"/app/list/data/tools/admin/was70":"1828188"},{"/app/list/data/tools/admin/was70/PM":"1821472"},{"/app/list/data/installableApps":"1576804"}],"gros fichiers":[{"/app/list/data/installableApps/sippint.ear":"254561326"},{"/app/list/data/depot/Archives_EAR/sippint.ear.1":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.3":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.10":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.9":"254561324"},{"/app/list/data/depot/Archives_EAR/sippint.ear.2":"254561327"},{"/app/list/data/depot/Archives_EAR/sippint.ear.4":"254561326"},{"/app/list/data/depot/Archives_EAR/sippint.ear.5":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.7":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.6":"254561324"},{"/app/list/data/depot/Archives_EAR/sippint.ear.8":"254561324"},{"/app/list/data/installableApps/scprec.ear":"224139031"},{"/app/list/data/depot/Archives_EAR/scprec.ear.1":"224133207"},{"/app/list/data/depot/Archives_EAR/scprec.ear.2":"224133190"},{"/app/list/data/depot/Archives_EAR/scprec.ear.3":"224133132"}]}
    ld002mid7074@mid:/tools/list/product/websphere70/httpserver/cgi-bin/monitoring >date +%s
    1447836925

    => Toujours 11 secondes (là j'ai relancé le date%s rapidement).

    3) curl à partir de mon poste windows (sans web/php/html ou autre) :
    ===========================================
    C:\Windows\System32>time
    L'heure actuelle est*: 9:58:21,86
    Entrez la nouvelle heure*: date
    C:\Windows\System32>curl http://ld002mid7074.cloud.group.gca/.../app/list/data
    {"fs":"/app/list/data","taille":"60227676","nombre_fichiers":"604351","repertoires volumineux":[{"/app/list/data/depot":"22307672"},{"/app/list/data/depot/Archives_EAR":"13656844"}
    ,{"/app/list/data/installedApps":"3102320"},{"/app/list/data/installedApps/CellBase":"3102316"},{"/app/list/data/depot/gzArchives":"2002040"},{"/app/list/data/tools":"1829376"},{"/
    app/list/data/tools/admin":"1828196"},{"/app/list/data/tools/admin/was70":"1828188"},{"/app/list/data/tools/admin/was70/PM":"1821472"},{"/app/list/data/installableApps":"1576804"}]
    ,"gros fichiers":[{"/app/list/data/installableApps/sippint.ear":"254561326"},{"/app/list/data/depot/Archives_EAR/sippint.ear.1":"254561325"},{"/app/list/data/depot/Archives_EAR/sip
    pint.ear.3":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.10":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.9":"254561324"},{"/app/list/data/depot/Arc
    hives_EAR/sippint.ear.2":"254561327"},{"/app/list/data/depot/Archives_EAR/sippint.ear.4":"254561326"},{"/app/list/data/depot/Archives_EAR/sippint.ear.5":"254561325"},{"/app/list/da
    ta/depot/Archives_EAR/sippint.ear.7":"254561325"},{"/app/list/data/depot/Archives_EAR/sippint.ear.6":"254561324"},{"/app/list/data/depot/Archives_EAR/sippint.ear.8":"254561324"},{"
    /app/list/data/installableApps/scprec.ear":"224139031"},{"/app/list/data/depot/Archives_EAR/scprec.ear.1":"224133207"},{"/app/list/data/depot/Archives_EAR/scprec.ear.2":"224133190"
    },{"/app/list/data/depot/Archives_EAR/scprec.ear.3":"224133132"}]}

    C:\Windows\System32>time
    L'heure actuelle est*: 9:58:34,17

    Un peu plus de 13 secondes mais je dois "breaker" la commande time du début ce qui me fait perdre du temps

    4) Enfin le script php/html qui fait un curl sur la même URL :
    ======================================
    J'ai simplifié le script pour ce message de forum, en lui demandant seulement le résultat du CURL, de manière à ne pas me faire polluer par la mise en page (j'ai rajouté un exit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
     
    $machine = $_GET['machine']; $fs=$_GET['fs'];
    error_reporting(E_ALL);
    include('fonctions.php');
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,30); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
     
    $debut = microtime(true);
     
    echo "
    <html>
    <head><title>Analyse du FS $fs sur la VM $machine<b></b></title><link rel='stylesheet' type='text/css' href='style.css'></head>
    <body>
    <center>
    <a href='../monitoring/machine.php?machine=$machine&monitoring=systeme'><img src='images/accueil.jpg' alt='desc' valign=center align=center height='14' width='14'></a><br><br>
    <span style='font-family:Calibri; font-size:16px; font-weight:bold; color:darkgreen'>";
    //<b><u>VM $machine</u><br>FileSystem : $fs</b><br><br>";
     
    $url = "http://".$machine."/cgi-bin/monitoring/analyse_fs.sh?$fs"; echo $url."<br>";
    $chaine = mon_curl($url); echo "debut_chaine".$chaine."debut_chaine";
     
    $fin = microtime(true); $time = $fin - $debut;
    echo "Duree du script : ".round($time, 3)." s";
    exit;
    ...
    Et là, je visualise bien la page suivante :
    Pièce jointe 192939

    **********
    http://ld002mid7074.cloud.group.gca/.../app/list/data
    debut_chainedebut_chaineDuree du script : 5.011 s
    **********

    Ce qui confirme que je ne reçois pas dans les temps (env 5 secondes) le résultat de la commande CURL du code php, ce qui est normal.

    Ce qui me gène ce sont les 5 secondes, que je veux désactiver (où ?) ou au moins augmenter.

    Merci par avance.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Août 2012
    Messages : 22
    Par défaut
    Bonjour,

    Je viens de trouver le grain de sable.

    J'appele la fonction curl de php dans mon script, mais aussi via un fichier fonctions.php, dans lequel les paramètres suivants étaient configurés :
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);

    Et c'est ce qui provoquait le timeout.

    Je les ai passé à 30 (dans un premier temps), et mon problème de timeout est résolu.

    Merci quand même pour votre lecture, cette discussion peut être cloturée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/09/2007, 17h39
  2. [UBUNTU] Problème d'accent avec apache
    Par dark_vidor dans le forum Ubuntu
    Réponses: 4
    Dernier message: 07/03/2007, 22h31
  3. Problèmes de timeout pour un script PHP avec Apache
    Par bluemartini dans le forum Apache
    Réponses: 2
    Dernier message: 11/07/2006, 16h16
  4. problème installation XMLRAD avec Apache
    Par cdevl dans le forum XMLRAD
    Réponses: 1
    Dernier message: 15/12/2005, 09h47
  5. problème adresse web avec apache
    Par xlinformatik dans le forum Apache
    Réponses: 4
    Dernier message: 08/09/2005, 18h33

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