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
*De: *"Denis Cardon" dcardon@tranquil.it *À: *"Frederic Garesche" Frederic.Garesche@insa-rennes.fr, "wapt" wapt@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
WAPT mailing list WAPT@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@lists.tranquil.it http://lists.tranquil.it/listinfo/wapt