[Wapt] Arrêt aléatoire du serveur wapt

Hubert TOUVET htouvet at tranquil.it
Tue Oct 22 09:27:26 CEST 2019


Dans le code source de waptserver/server.py,
l'import du module 'os' devrait être après le monkey patching...

Il faudrait essayer de modifier server.py comme ceci :

*from *__future__ *import *absolute_import
*import *sys
if __name__ == '__main__':
     # as soon as possible, we must monkey patch the library...
     # monkeypatching for eventlet greenthreads
     from eventlet import monkey_patch
     # os=False for windows see 
https://mail.python.org/pipermail/python-bugs-list/2012-November/186579.html
*    if hasattr(sys,'getwindowsversion'):**
*        # interactive debug mode on PyScripter hang if tread is patched.
         if 'rpyc' in sys.modules:
             monkey_patch(os=False,thread=False)
         else:
             monkey_patch(os=False)
     else:
         monkey_patch()

*import platform**
**import os*

from waptserver.config import __version__
...

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)
Lancer en bash :

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;

lr-x------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/0 -> /dev/null
lrwx------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/1 -> 
'socket:[5267269]'
lr-x------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/10 -> /dev/urandom
lr-x------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/15 -> /dev/urandom
lrwx------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/2 -> 
'socket:[5267269]'
lrwx------ 1 wapt www-data 64 Oct 21 17:52 /proc/6765/fd/3 -> 
'anon_inode:[eventpoll]'

Dans cette sortie, les 2 sockets bloquants sont pour stdout :
ss -a | grep 5267269
u_str   ESTAB        0 0                                               * 
5267269                                                  * 5269890
u_str   ESTAB        0        0 /run/systemd/journal/stdout 
5269890                                                  * 5267269



Le 21/10/2019 à 16:06, Frederic Garesche a écrit :
> Re,
>
> J'ai fait la modification.
>
> À voir...
>
>
> *Frédéric GARESCHÉ
> *
> *Équipe Assistance et Exploitation
> *
> *Direction du Système d'Information (D.S.I)*
> *Correspondant Département EII et laboratoire IETR
> *Tél. : +33 (0)2 23 2*3 82 81*
> 20 avenue des Buttes de Coësmes
> CS 70839 - 35 708 RENNES Cedex 7
>
> <https://www.insa-rennes.fr>
>
> ------------------------------------------------------------------------
> *De: *"Denis Cardon" <dcardon at tranquil.it>
> *À: *"Frederic Garesche" <Frederic.Garesche at insa-rennes.fr>, "wapt" 
> <wapt at lists.tranquil.it>
> *Envoyé: *Lundi 21 Octobre 2019 15:54:29
> *Objet: *Re: [Wapt] Arrêt aléatoire du serveur wapt
>
> Bonjour Frédéric,
>
> > Debian 9.11
> > Wapt 1.7.4.6223
> > //
> > /1316 postes
> > /
> > /
> > /
> > /Bonjour,/
> > /
> > Nous avons régulièrement notre serveur wapt qui plante. J'ai vu sur le
> > forum que je n'étais pas le seul.
> >
> > En relançant le service waptserver, le serveur repart.
> >
> > Comme indiqué dans l'un des posts du forum, je vous donne le résultat de
> > la commande lors du problème :/
> > /
> > /
> > /sudo -u postgres psql wapt :/
> > /SELECT datname, usename , client_addr, xact_start , query_start
> > ,state_change, state, query FROM pg_stat_activity ;/
> >
> >  datname | usename  | client_addr |          xact_start
> > |          query_start          |         state_change        | state
> > |
> > query
> > 
> ---------+----------+-------------+-------------------------------+-------------------------------+-------------------------------+--------+---------------------------------------------------------------------------------------------------------------------
> >  wapt    | wapt     |             |         |
> > 2019-10-21 13:25:34.522094+02 | 2019-10-21 13:25:34.522444+02 | idle   |
> > COMMIT
> >  wapt    | wapt     |             |         |
> > 2019-10-21 13:24:07.221414+02 | 2019-10-21 13:24:07.221881+02 | idle   |
> > COMMIT
> >  wapt    | postgres |             | 2019-10-21 13:25:34.715642+02 |
> > 2019-10-21 13:25:34.715642+02 | 2019-10-21 13:25:34.715646+02 | active |
> > SELECT datname, usename , client_addr, xact_start , query_start
> > ,state_change, state, query FROM pg_stat_activity ;
> > (3 lignes)
> >
> >
> > Autrement la commande à mattre en cron n'est pas opérationnelle.
> >
> > wget -q -O - http://127.0.0.1:8080/ping --no-check-certificate | grep
> > "WAPT Server running" || (echo Restart; systemctl restart waptserver )
> >
> > Lorsque le serveur fonctionne, on a bien un retour immédiat. Par contre
> > lorsque le serveur plante, le retour ne se fait pas ou alors je n'ai pas
> > attendu assez longtemps. Mais en tout cas cela n'est pas utilisable en
> > l'état.
> > Peut-on changer le timeout de l'api ping ?
>
> Je pense que c'est plutôt sur le wget qu'il faut rajouter le timeout:
>
> unset http_proxy ; wget -t 1 -q -O- http://127.0.0.1:8080/ping
> --no-check-certificate | grep "WAPT Server running" || (echo Restart;
> systemctl restart waptserver )
>
> Vous pouvez mettre ça dans un crontab assez régulier. Mais bon, il
> faudrait trouver où ça bloque... C'est assez curieux car ce n'est pas
> lié directement à un pic de charge.
>
> Piste potentielle: on a pas eu de remontée de problème avec des serveurs
> WAPT sous Windows... La principale différence est l'abscence de "monkey
> patching"[1] par eventlet de la librairie os (à cause d'un autre bug sur
> les pipe [2])... Vous pourriez éventuellement modifier la ligne suivante
> dans le fichier waptserver.py :
>
> diff --git a/waptserver/server.py b/waptserver/server.py
> index fe75b719..ee8fbc0b 100644
> --- a/waptserver/server.py
> +++ b/c
> @@ -39,7 +39,7 @@ if __name__ == '__main__':
>           else:
>               monkey_patch(os=False)
>       else:
> -        monkey_patch()
> +        monkey_patch(os=False)
>
>
>   from waptserver.config import __version__
>
>
> Cordialement,
>
> Denis
>
> [1]
> http://eventlet.net/doc/patching.html#monkeypatching-the-standard-library
> [2] https://github.com/eventlet/eventlet/issues/483
>
> >
> > Cordialement,
> >
> >
> > *Frédéric GARESCHÉ
> > *
> > *Équipe Assistance et Exploitation
> > *
> > *Direction du Système d'Information (D.S.I)*
> > *Correspondant Département EII et laboratoire IETR
> > *Tél. : +33 (0)2 23 2*3 82 81*
> > 20 avenue des Buttes de Coësmes
> > CS 70839 - 35 708 RENNES Cedex 7
> >
> > <https://www.insa-rennes.fr>
> >
> >
> > _______________________________________________
> > WAPT mailing list
> > WAPT at lists.tranquil.it
> > http://lists.tranquil.it/listinfo/wapt
> >
>
> -- 
> Denis Cardon
> Tranquil IT
> 12 avenue Jules Verne (Bat. A)
> 44230 Saint Sébastien sur Loire (FRANCE)
> tel : +33 (0) 240 975 755
> http://www.tranquil.it
>
> Tranquil IT recrute! https://www.tranquil.it/nous-rejoindre/
> Samba install wiki for Frenchies : https://dev.tranquil.it
> WAPT, software deployment made easy : https://wapt.fr
>
> _______________________________________________
> WAPT mailing list
> WAPT at lists.tranquil.it
> http://lists.tranquil.it/listinfo/wapt

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.tranquil.it/pipermail/wapt/attachments/20191022/4c87ec64/attachment.html>


More information about the WAPT mailing list