<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <br>
    Dans le code source de waptserver/server.py, <br>
    l'import du module 'os' devrait être après le monkey patching...<br>
    <br>
    Il faudrait essayer de modifier server.py comme ceci : <br>
    <br>
    <tt><b>from </b>__future__ <b>import </b>absolute_import</tt><tt><br>
    </tt><tt><b>import </b>sys</tt><tt><br>
    </tt><tt>if __name__ == '__main__':</tt><tt><br>
    </tt><tt>    # as soon as possible, we must monkey patch the
      library...</tt><tt><br>
    </tt><tt>    # monkeypatching for eventlet greenthreads</tt><tt><br>
    </tt><tt>    from eventlet import monkey_patch</tt><tt><br>
    </tt><tt>    # os=False for windows see
<a class="moz-txt-link-freetext" href="https://mail.python.org/pipermail/python-bugs-list/2012-November/186579.html">https://mail.python.org/pipermail/python-bugs-list/2012-November/186579.html</a></tt><tt><br>
    </tt><font color="#ff0000"><b><tt>    if
          hasattr(sys,'getwindowsversion'):</tt></b></font><b><tt><br>
      </tt></b><tt>        # interactive debug mode on PyScripter hang
      if tread is patched.</tt><tt><br>
    </tt><tt>        if 'rpyc' in sys.modules:</tt><tt><br>
    </tt><tt>            monkey_patch(os=False,thread=False)</tt><tt><br>
    </tt><tt>        else:</tt><tt><br>
    </tt><tt>            monkey_patch(os=False)</tt><tt><br>
    </tt><tt>    else:</tt><tt><br>
    </tt><tt>        monkey_patch()</tt><tt><br>
    </tt><font color="#ff0000"><tt><br>
      </tt><b><tt>import platform</tt></b><b><tt><br>
        </tt></b><b><tt>import os</tt></b></font><tt><br>
    </tt><tt><br>
    </tt><tt>from waptserver.config import __version__</tt><tt><br>
    </tt><tt></tt><tt>...</tt><tt><br>
    </tt><br>
    Quand il y a blocage, il faudrait regarder si des sockets ou des
    fichiers sont ouverts en mode bloquant (ce qui ne devrait pas être
    le cas avec les greenlet)<br>
    Lancer en bash : <br>
    <br>
    <tt>pids=$(pgrep -f "server.py"); for f in /proc/$pids/fdinfo/*; do
      cat $f | grep flags | grep -q -v 400[0,1,2] && ls -al
      /proc/$pids/fd/$(basename $f) ;  done;</tt><tt><br>
    </tt><br>
    <tt>lr-x------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/0 ->
      /dev/null</tt><tt><br>
    </tt><tt>lrwx------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/1
      -> 'socket:[5267269]'</tt><tt><br>
    </tt><tt>lr-x------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/10
      -> /dev/urandom</tt><tt><br>
    </tt><tt>lr-x------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/15
      -> /dev/urandom</tt><tt><br>
    </tt><tt>lrwx------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/2
      -> 'socket:[5267269]'</tt><tt><br>
    </tt><tt>lrwx------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/3
      -> 'anon_inode:[eventpoll]'</tt><tt><br>
    </tt><br>
    Dans cette sortie, les 2 sockets bloquants sont pour stdout : <br>
    <tt>ss -a | grep 5267269</tt><tt><br>
    </tt><tt>u_str   ESTAB        0       
      0                                               *
      5267269                                                  * 5269890</tt><tt><br>
    </tt><tt>u_str   ESTAB        0        0                    
      /run/systemd/journal/stdout
      5269890                                                  * 5267269</tt><br>
    <br>
    <br>
    <br>
    <div class="moz-cite-prefix">Le 21/10/2019 à 16:06, Frederic
      Garesche a écrit :<br>
    </div>
    <blockquote type="cite"
      cite="mid:372402162.555320.1571666819974.JavaMail.zimbra@insa-rennes.fr">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div id="zimbraEditorContainer" style="font-family: courier
        new,courier,monaco,monospace,sans-serif; font-size: 13pt; color:
        #000000" class="6">
        <div>Re,<br>
        </div>
        <div><br data-mce-bogus="1">
        </div>
        <div>J'ai fait la modification.<br data-mce-bogus="1">
        </div>
        <div><br data-mce-bogus="1">
        </div>
        <div>À voir...<br data-mce-bogus="1">
        </div>
        <div><br data-mce-bogus="1">
        </div>
        <div><br>
        </div>
        <div data-marker="__SIG_PRE__">
          <div>
            <div style="color: #5e5e5d; font-size: 13px; font-family:
              arial;"><span style="font-family: courier new, courier,
                monaco, monospace, sans-serif;"><b><span style="color:
                    #333333;">Frédéric GARESCHÉ</span><br>
                </b></span></div>
            <div style="color: #5e5e5d; font-size: 13px; font-family:
              arial;"><span style="color: rgb(128, 128, 128);
                font-family: courier new, courier, monaco, monospace,
                sans-serif;"><b>Équipe Assistance et Exploitation<br>
                </b></span></div>
            <div style="color: #5e5e5d; font-size: 13px; font-family:
              arial;"><span style="color: rgb(128, 128, 128);
                font-family: courier new, courier, monaco, monospace,
                sans-serif;"><b>Direction du Système d'Information
                  (D.S.I)</b></span></div>
            <div style="color: #5e5e5d; font-size: 13px; font-family:
              arial;"><span style="color: rgb(128, 128, 128);
                font-family: courier new, courier, monaco, monospace,
                sans-serif;"><b>Correspondant Département EII et
                  laboratoire IETR<br>
                </b>Tél. : +33 (0)2 23 2<strong>3 82 81</strong></span></div>
            <div style="color: #5e5e5d; font-size: 13px; font-family:
              arial;">
              <div><span style="color: rgb(128, 128, 128); font-family:
                  courier new, courier, monaco, monospace, sans-serif;">20
                  avenue des Buttes de Coësmes</span><br>
                <span style="color: rgb(128, 128, 128); font-family:
                  courier new, courier, monaco, monospace, sans-serif;">CS
                  70839 - 35 708 RENNES Cedex 7</span></div>
            </div>
            <div style="color: #5e5e5d; font-size: 13px; font-family:
              arial;"><span style="color: #808080;"></span><br>
            </div>
            <a href="https://www.insa-rennes.fr" target="_blank"
              moz-do-not-send="true"><img
src="http://ressources.insa-rennes.fr/images/logos/logo-INSARennes_mail.jpg"
                alt=""
data-mce-src="http://ressources.insa-rennes.fr/images/logos/logo-INSARennes_mail.jpg"
                moz-do-not-send="true"></a><br>
          </div>
        </div>
        <div><br>
        </div>
        <hr id="zwchr" data-marker="__DIVIDER__">
        <div data-marker="__HEADERS__"><b>De: </b>"Denis Cardon"
          <a class="moz-txt-link-rfc2396E" href="mailto:dcardon@tranquil.it"><dcardon@tranquil.it></a><br>
          <b>À: </b>"Frederic Garesche"
          <a class="moz-txt-link-rfc2396E" href="mailto:Frederic.Garesche@insa-rennes.fr"><Frederic.Garesche@insa-rennes.fr></a>, "wapt"
          <a class="moz-txt-link-rfc2396E" href="mailto:wapt@lists.tranquil.it"><wapt@lists.tranquil.it></a><br>
          <b>Envoyé: </b>Lundi 21 Octobre 2019 15:54:29<br>
          <b>Objet: </b>Re: [Wapt] Arrêt aléatoire du serveur wapt<br>
        </div>
        <div><br>
        </div>
        <div data-marker="__QUOTED_TEXT__">Bonjour Frédéric,<br>
          <br>
          > Debian 9.11<br>
          > Wapt 1.7.4.6223<br>
          > //<br>
          > /1316 postes<br>
          > /<br>
          > /<br>
          > /<br>
          > /Bonjour,/<br>
          > /<br>
          > Nous avons régulièrement notre serveur wapt qui plante.
          J'ai vu sur le<br>
          > forum que je n'étais pas le seul.<br>
          ><br>
          > En relançant le service waptserver, le serveur repart.<br>
          ><br>
          > Comme indiqué dans l'un des posts du forum, je vous donne
          le résultat de<br>
          > la commande lors du problème :/<br>
          > /<br>
          > /<br>
          > /sudo -u postgres psql wapt :/<br>
          > /SELECT datname, usename , client_addr, xact_start ,
          query_start<br>
          > ,state_change, state, query FROM pg_stat_activity ;/<br>
          ><br>
          >  datname | usename  | client_addr |          xact_start<br>
          > |          query_start          |         state_change  
                 | state<br>
          > |<br>
          > query<br>
          >
---------+----------+-------------+-------------------------------+-------------------------------+-------------------------------+--------+---------------------------------------------------------------------------------------------------------------------<br>
          >  wapt    | wapt     |             |                      
                  |<br>
          > 2019-10-21 13:25:34.522094+02 | 2019-10-21
          13:25:34.522444+02 | idle   |<br>
          > COMMIT<br>
          >  wapt    | wapt     |             |                      
                  |<br>
          > 2019-10-21 13:24:07.221414+02 | 2019-10-21
          13:24:07.221881+02 | idle   |<br>
          > COMMIT<br>
          >  wapt    | postgres |             | 2019-10-21
          13:25:34.715642+02 |<br>
          > 2019-10-21 13:25:34.715642+02 | 2019-10-21
          13:25:34.715646+02 | active |<br>
          > SELECT datname, usename , client_addr, xact_start ,
          query_start<br>
          > ,state_change, state, query FROM pg_stat_activity ;<br>
          > (3 lignes)<br>
          ><br>
          ><br>
          > Autrement la commande à mattre en cron n'est pas
          opérationnelle.<br>
          ><br>
          > wget -q -O - <a class="moz-txt-link-freetext" href="http://127.0.0.1:8080/ping">http://127.0.0.1:8080/ping</a>
          --no-check-certificate | grep<br>
          > "WAPT Server running" || (echo Restart; systemctl restart
          waptserver )<br>
          ><br>
          > Lorsque le serveur fonctionne, on a bien un retour
          immédiat. Par contre<br>
          > lorsque le serveur plante, le retour ne se fait pas ou
          alors je n'ai pas<br>
          > attendu assez longtemps. Mais en tout cas cela n'est pas
          utilisable en<br>
          > l'état.<br>
          > Peut-on changer le timeout de l'api ping ?<br>
          <br>
          Je pense que c'est plutôt sur le wget qu'il faut rajouter le
          timeout:<br>
          <br>
          unset http_proxy ; wget -t 1 -q -O- <a class="moz-txt-link-freetext" href="http://127.0.0.1:8080/ping">http://127.0.0.1:8080/ping</a>
          <br>
          --no-check-certificate | grep "WAPT Server running" || (echo
          Restart; <br>
          systemctl restart waptserver )<br>
          <br>
          Vous pouvez mettre ça dans un crontab assez régulier. Mais
          bon, il <br>
          faudrait trouver où ça bloque... C'est assez curieux car ce
          n'est pas <br>
          lié directement à un pic de charge.<br>
          <br>
          Piste potentielle: on a pas eu de remontée de problème avec
          des serveurs <br>
          WAPT sous Windows... La principale différence est l'abscence
          de "monkey <br>
          patching"[1] par eventlet de la librairie os (à cause d'un
          autre bug sur <br>
          les pipe [2])... Vous pourriez éventuellement modifier la
          ligne suivante <br>
          dans le fichier waptserver.py :<br>
          <br>
          diff --git a/waptserver/server.py b/waptserver/server.py<br>
          index fe75b719..ee8fbc0b 100644<br>
          --- a/waptserver/server.py<br>
          +++ b/c<br>
          @@ -39,7 +39,7 @@ if __name__ == '__main__':<br>
                    else:<br>
                        monkey_patch(os=False)<br>
                else:<br>
          -        monkey_patch()<br>
          +        monkey_patch(os=False)<br>
          <br>
          <br>
            from waptserver.config import __version__<br>
          <br>
          <br>
          Cordialement,<br>
          <br>
          Denis<br>
          <br>
          [1] <br>
<a class="moz-txt-link-freetext" href="http://eventlet.net/doc/patching.html#monkeypatching-the-standard-library">http://eventlet.net/doc/patching.html#monkeypatching-the-standard-library</a><br>
          [2] <a class="moz-txt-link-freetext" href="https://github.com/eventlet/eventlet/issues/483">https://github.com/eventlet/eventlet/issues/483</a><br>
          <br>
          ><br>
          > Cordialement,<br>
          ><br>
          ><br>
          > *Frédéric GARESCHÉ<br>
          > *<br>
          > *Équipe Assistance et Exploitation<br>
          > *<br>
          > *Direction du Système d'Information (D.S.I)*<br>
          > *Correspondant Département EII et laboratoire IETR<br>
          > *Tél. : +33 (0)2 23 2*3 82 81*<br>
          > 20 avenue des Buttes de Coësmes<br>
          > CS 70839 - 35 708 RENNES Cedex 7<br>
          ><br>
          > <a class="moz-txt-link-rfc2396E" href="https://www.insa-rennes.fr"><https://www.insa-rennes.fr></a><br>
          ><br>
          ><br>
          > _______________________________________________<br>
          > WAPT mailing list<br>
          > <a class="moz-txt-link-abbreviated" href="mailto:WAPT@lists.tranquil.it">WAPT@lists.tranquil.it</a><br>
          > <a class="moz-txt-link-freetext" href="http://lists.tranquil.it/listinfo/wapt">http://lists.tranquil.it/listinfo/wapt</a><br>
          ><br>
          <br>
          -- <br>
          Denis Cardon<br>
          Tranquil IT<br>
          12 avenue Jules Verne (Bat. A)<br>
          44230 Saint Sébastien sur Loire (FRANCE)<br>
          tel : +33 (0) 240 975 755<br>
          <a class="moz-txt-link-freetext" href="http://www.tranquil.it">http://www.tranquil.it</a><br>
          <br>
          Tranquil IT recrute! <a class="moz-txt-link-freetext" href="https://www.tranquil.it/nous-rejoindre/">https://www.tranquil.it/nous-rejoindre/</a><br>
          Samba install wiki for Frenchies : <a class="moz-txt-link-freetext" href="https://dev.tranquil.it">https://dev.tranquil.it</a><br>
          WAPT, software deployment made easy : <a class="moz-txt-link-freetext" href="https://wapt.fr">https://wapt.fr</a><br>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
WAPT mailing list
<a class="moz-txt-link-abbreviated" href="mailto:WAPT@lists.tranquil.it">WAPT@lists.tranquil.it</a>
<a class="moz-txt-link-freetext" href="http://lists.tranquil.it/listinfo/wapt">http://lists.tranquil.it/listinfo/wapt</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>