Project

General

Profile

Websocketd 100% CPU

Added by Fip Fip 28 days ago

Bonjour,

Nous intégrer à un ERP déjà existant, des boutons executant des requêtes API et Websocket.

Nous travaillons avec Wazo 18.03, nous recevons une centaine d'appels en simultané (jusqu'à 200) et nous avons une quarantaine d'agents qui utilise la solution.

Pour authentifier les agents avec le Websocket, nous utilisons le token des agents.
En effet, nous avons mis en place une remontée de fiche qui fait appel au Websocket. Nous nous apercevons que le processus monte à 100% de charge sur la partie CPU et ne répond plus. Nous sommes dans l'obligation de reboot le service.

Nous sommes obligé de reboot plusieurs fois par jours le processus Websocket?

Est-ce que quelqu'un à déjà rencontré le problème?

Merci d'avance pour votre aide.


Replies (34)

RE: Websocketd 100% CPU - Added by Sylvain Boily 13 days ago

Il ne faut pas faire avec twistd c'est pas du twisted derrière.

RE: Websocketd 100% CPU - Added by Sylvain Boily 13 days ago

python3 plutôt que python aussi.

RE: Websocketd 100% CPU - Added by Fip Fip 13 days ago

En effet en Python3 et dans le répertoire /tmp/ cela fonctionne.

Voici le fichier test.profile mais il n'y a pas de production en ce moment donc j'imagine qu'il sera inutile.
L'idée est de lancer cette procédure en plein charge demain matin ?

=====================
python3 -m cProfile -o /tmp/test.profile /usr/bin/xivo-websocketd -f
2019-07-10 00:49:39,922 [15337] (INFO) (xivo_websocketd.controller): xivo-websocketd starting ...
C2019-07-10 00:50:42,342 [15337] (INFO) (xivo_websocketd.controller): xivo-websocketd stopping...
2019-07-10 00:50:42,343 [15337] (INFO) (xivo_websocketd.controller): xivo-websocketd stopped

root@wazo:/tmp# python3 -m pstats /tmp/test.profile
Welcome to the profile statistics browser.
/tmp/test.profile% sort time
/tmp/test.profile% stats 15
Wed Jul 10 00:50:42 2019 /tmp/test.profile

798602 function calls (773608 primitive calls) in 63.263 seconds
Ordered by: internal time
List reduced from 3193 to 15 due to restriction <15>
ncalls  tottime  percall  cumtime  percall filename:lineno(function)
8 62.420 7.802 62.420 7.802 {method 'poll' of 'select.epoll' objects}
435 0.057 0.000 0.057 0.000 {built-in method marshal.loads}
10570/229 0.032 0.000 0.124 0.001 /usr/lib/python3/dist-packages/pkg_resources/_vendor/pyparsing.py:1347(parseNoCache)
1476/1463 0.028 0.000 0.086 0.000 {built-in method builtins.
_build_class__}
6422 0.022 0.000 0.056 0.000 /usr/lib/python3/dist-packages/pkg_resources/_vendor/packaging/version.py:131(_legacy_cmpkey)
482/1 0.021 0.000 63.265 63.265 {built-in method builtins.exec}
2753 0.020 0.000 0.020 0.000 {built-in method posix.stat}
40472 0.019 0.000 0.031 0.000 /usr/lib/python3/dist-packages/pkg_resources/_vendor/packaging/version.py:65(_compare)
6910/6454 0.018 0.000 0.028 0.000 /usr/lib/python3/dist-packages/pkg_resources/_vendor/pyparsing.py:349(init)
20220 0.017 0.000 0.028 0.000 /usr/lib/python3/dist-packages/pkg_resources/_vendor/packaging/version.py:114(_parse_version_parts)
18 0.016 0.001 0.181 0.010 {built-in method builtins.sorted}
590 0.015 0.000 0.018 0.000 /usr/lib/python3.5/sre_compile.py:248(_optimize_charset)
7082 0.014 0.000 0.037 0.000 /usr/lib/python3/dist-packages/pkg_resources/_vendor/packaging/version.py:198(init)
763/156 0.014 0.000 0.043 0.000 /usr/lib/python3.5/sre_parse.py:491(_parse)
91473/91472 0.013 0.000 0.014 0.000 {built-in method builtins.isinstance}

========================================================

test.profile (421 KB)

RE: Websocketd 100% CPU - Added by Fip Fip 13 days ago

Bonjour,

Voici le profiling avec le CPU à 100%.
Je joint également les logs de xivo-websocketd durant la capture.

RE: Websocketd 100% CPU - Added by Sébastien Duthil 12 days ago

Salut Fip,

Dans le profiling, on voit qu'une bonne partie du temps CPU est passée à vérifier les ACL des messages. Je te propose un petit patch pour améliorer les performances de cette partie de websocketd.

Peux-tu nous dire si ça améliore ton cas?

RE: Websocketd 100% CPU - Added by Fip Fip 12 days ago

Bonjour,

Merci, nous avons appliqué le patch ce matin.
Nous attendons plus de données pour valider si la charge Websocket s’améliore.

RE: Websocketd 100% CPU - Added by Fip Fip 11 days ago

Bonjour,

Nous ne rencontrons plus de problème depuis plus de 24h.
La plus forte charge étant le Lundi matin, nous attendons Lundi prochain pour valider définitivement la résolution de la problématique.

Encore merci pour votre aide sur ce sujet.

RE: Websocketd 100% CPU - Added by Sylvain Boily 11 days ago

Super merci pour ton retour. Si cela corrige bien, nous ferons aussi de quoi sur master.

RE: Websocketd 100% CPU - Added by Fip Fip 8 days ago

Bonjour,

La charge coté Websocket est définitivement correcte, nous sommes passés de 70% nominal à 2%.
Nous ne rencontrons plus aucun problème de délais sur le messages WSS.

Tout fonctionnement correctement pour nous maintenant.

Encore merci pour votre aide sur ce sujet.

(26-34/34)