[RESOLU] Lenteur parfois sur dashboard Gladys Plus

Bonjour,

J’ai un problème d’affichage sur le dashboard ci-dessous qui revient régulièrement quand je passe par Gladys Plus. Je pensais d’abord que ça arrivait lorsque le Raspberry ne rebootait pas pendant plusieurs semaines. J’ai donc planifié un reboot hebdo mais c’est rapidement revenu. Mon autre hypothèse serait la lenteur de ma connexion internet. Est-ce que d’autres utilisateurs auraient ce problème ?

Les deux box à droite sont censées afficher mes caméras. L’image finit par arriver quelques dizaines de secondes plus tard mais le message d’erreur reste présent.

Hello @Mastho, étrange tout ça ! Effectivement peut-être un problème de connexion internet, mais par forcément.

Pour comprendre mieux ton problème:

  • Tu as quel raspberry Pi ? Branché sur une micro-SD performante (ou pas?)
  • Est-ce que tu pourrais nous poster un speedtest ici (côté Raspberry Pi chez toi ET côté machine ou tu utilise Gladys Plus) ?
  • Tu as combien de caméra sur ton installation ? Est-ce que tu as l’impression que ton Pi en local est « sous pression » ou est-ce qu’il n’est pas trop sollicité ? Quelle fréquence de rafraichissement des caméras as-tu mis ?

On va débugguer ça ensemble jusqu’à ce qu’on comprenne :smiley: Si tu as des dispos on peut aussi s’appeler directement pour voir ensemble en direct.

Merci encore pour ton soutien via Gladys Plus :pray:

Salut @pierre-gilles,

Je suis sur un 3B+ acheté il y a presque 2 ans avec une micro-SD à 24 Mo/s.
Je ne pense pas que ça soit un problème de performances car en local l’affichage est instantané pour les 4 box que j’utilise actuellement sur le dashboard. J’ai uniquement ces deux caméras avec un refresh chaque minute.

Via Gladys Plus, j’ai le même problème que je sois chez moi ou en 4G depuis mon téléphone. Dans les paramètres de Gladys, j’ai une latence de 66 ms en local et 1500 ms via Gladys Plus.

Je devrais avoir un créneau samedi ou dimanche si t’es dispo aussi.

Ci-dessous le speedtest. Au niveau de la box internet, je suis à 16 Mbit/s en down pour 900 kbit/s en up.

Speedtest

Aïe tu es en ADSL pour ta box internet ? Chez quel opérateur ?

Tu as un débit effectivement assez faible en upload, et un ping vraiment élevé, ce qui explique la lenteur que tu observes, mais ça n’explique pas tout, normalement ça devrait être juste plus lent.

Dispo ce week-end quand tu veux pour regarder ça ensemble.

Je te contacte en message privée.

Attention serveur localisé à Barcelone

@Mastho habite dans le sud de la France, ça fait sens :slight_smile:

1 Like

Alors j’avais jamais vraiment check, c’est quoi le « ping moyen » via Gladys Plus ?
J’ai 267ms en 4G+ , ça me « semble » beaucoup ( 60 en local )

Fibre + 1Gb/s lan + Server bi xeon , me semble pas y’avoir d’entonnoir chez moi

267ms c’est excellent, t’as rien à te reprocher :smiley:

En fait, le mot « ping » est peut-être mal employé ici, il n’y a pas que du temps réseau ici, mais du temps de processing dans ce calcul.

Ce qui est calculé, c’est le temps entre:

-> Le frontend envoie « ping » au serveur Gladys Plus
-> Gladys Plus envoie « ping » à ton instance Gladys
-> Ton instance Gladys répond « pong » au serveur Gladys Plus
-> Gladys Plus répond « pong » au navigateur

Donc en fait, le « ping » est plus un « ping x4 » ici, sachant qu’à chaque étape il peut y avoir des delay tout bête (ton instance Gladys est sollicité par des capteurs en permanence, donc elle va pas forcément répondre pong directement, etc…).

267ms chez toi, c’est juste excellent pour tout ça :slight_smile:

Chez toi tu as 60ms car le ping est juste un « ping » vers ta machine sur le réseau local.

ADSL chez Sosh. Mais ça fait quand même une grosse latence pour quelques pings, même en ADSL.

Je te montrerais tout ça et on fera quelques tests :slight_smile:

Bon on vient de s’appeler avec @Mastho pour enquêter, ce n’est pas un problème de réseau, mais plutôt un problème local sur son instance Gladys :slight_smile: C’est une bonne nouvelle, car le réseau on y peut rien, mais un problème en local ça se débloque !

En regardant ses logs, on a vu beaucoup de « DATABASE_IS_LOCKED SQLITE_BUSY » au niveau de l’insert de localisation, et mon avis cela vient de la transaction ici : Gladys/location.create.js at master · GladysAssistant/Gladys · GitHub

Ce qui est intéressant, c’est qu’en redémarrant gladys, il n’y avait plus le problème, Gladys Plus fonctionnait sans soucis.

Le fait qu’on utilise une transaction peut créer un deadlock, et je me demande si c’est pas ce qui se passe ici.

A mon avis, la transaction n’a pas forcément de sens ici on peut la faire sauter. Surtout quand Gladys est utilisée sur des micro-SD avec des performances en lecture/écriture plutôt moyenne, une transaction c’est lourd et ça met en queue toutes les autres écritures (SQLite en WAL mode ne supporte qu’une écriture à la fois)

C’est exactement le meme problème que j’avais régulièrement également avec

et le soucis avec la perte de Gladys Plus. Top si ca peut être résolu !!

@Terdious est-ce que tu as toujours le problème depuis que tu es sur SSD?

Toujours le problème d’accès oui !!



Pourtant je suis bon de ce coté

Mais aucun logs ici :

ah mince!! Tes logs ne montrent rien de particulier (je vois du caldav, mais tout semble bien aller), c’est le bon screenshot?

Yes c’est le bon !! Du coup c’est même comme si il ne tentait même pas de se connecter !!

Ok j’ai testé en local, et effectivement j’ai trouvé des soucis avec les transactions qu’on utilise, clairement il y avait des bugs dès qu’il y avait de la concurrence. Je me demande si la version de Sequelize qu’on utilise n’a pas aussi des problèmes là dessus, il va falloir songer à mettre à jour Sequelize…

J’ai fais une PR qui retire ces transactions foireuses + rajoute des tests de concurrences, et là ça passe beaucoup mieux:

1 Like

Nouveau :


Je n’ai plus rien alors que le curseur est bon en local ^^
Pas moyen de retourner à la page de connexion à partir d’ici ^^

Hello,

Petit retour pour ma part:

  • installation de gladys sur un raspberry (avec l’install que tu donnes), il n’y a aucun service de configuré
  • configuration de gladys plus

J’ai la fibre, raspberry pi 4 avec un ssd (ok sur l’USB2 mais quand même).

J’ai des pings à 600ms … Aucun database is locked. Pas sur que ça soit ca. :confused:

Super bizarre, je vais essayer de pousser le fix dans la journée !

Je vois pas le problème, c’est un bon chiffre :slight_smile: Comme expliqué plus haut, ce n’est pas un ping !

Si ce chiffre vous stresse tous je vais le retirer, il créé plus de problème qu’autre chose à ce que je vois ^^

@damalgos suite à notre call de ce matin, j’ai enquêté, et tu avais raison 600ms c’est pas normal :smiley:

Déjà côté Gladys gateway serveur, j’ai fais quelques optimisations, mais qui ne changent pas significativement la donne.

Le vrai problème vient de ce fameux « getUserById » local à Gladys, qui fait un appel DB pour chaque requête, et qui peut entrainer des blocages de la DB. J’ai remarqué des blocages de 700ms en local chez moi, malgré le fait que je suis sur un Mac avec un SSD du futur…

Cette requête DB n’est pas nécessaire, en remplaçant par un appel en RAM (grâce au « stateManager »), je tombe à 55ms, c’est bien meilleur, et ça correspond plus à ce qu’on attend d’une requête.

Preuve à l’appui: (c’est pas en local)

Pour ceux que ça intéresse, voilà quelques stats du temps pour chaque étape d’une requête via Gladys Plus:

La ligne qui posait problème c’était « getting-local-user », et maintenant ça met 0.009ms, bien plus opti :ok_hand:

Je continue mes optimisations pour voir si on peut pas aller plus loin.

4 Likes