Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[0.2.9] Lenteur sur le chargement des occurrences #142

Closed
maximetoma opened this issue Feb 2, 2022 · 33 comments
Closed

[0.2.9] Lenteur sur le chargement des occurrences #142

maximetoma opened this issue Feb 2, 2022 · 33 comments

Comments

@maximetoma
Copy link
Contributor

maximetoma commented Feb 2, 2022

Version GeoNature: 2.9.1
Version Monitoring : 0.2.9

Bonjour, j'observe depuis quelques temps des lenteurs d'affichage des données sur mes sous-modules monitoring.
Par exemple, pour charger 19 visites d'un site, la requête met 33 secondes à finir de s'exécuter

image

Sur quoi s'appuie cette requête ? Qu'est-ce qui pourrait à ce point prendre du temps à charger ? Je trouver que 19 visites c'est quand meme peu :-)

@maximetoma
Copy link
Contributor Author

maximetoma commented Feb 11, 2022

Pour alimenter, voici la fenêtre Délai via Firefox, je rendu à plus d'1 min d'attente pour 39 visites....
image

@joelclems
Copy link
Collaborator

bonjour maxime,

je n'arrive pas à reproduire le bug,
c'est bien la route object/test/site/1?depth=1
est ce que tu aurai beaucoup de jdd ?

@maximetoma
Copy link
Contributor Author

maximetoma commented Feb 11, 2022

Oui c'est bien le type de route: http://xxxxxx/geonature/api//monitoring/object/comptage_rnmo/site/1199?depth=1

Alors, sur le sous-module en question, je n'ai qu'un seul jeu de données attaché.
Par contre en tout dans mon GeoNature, j'en ai plus de 150

@joelclems
Copy link
Collaborator

la donnée renvoyée parait normale (de quelques kilos seulement) ?

@maximetoma
Copy link
Contributor Author

oui je pense, 24,4 kB

@joelclems
Copy link
Collaborator

il n' y a pas de changement majeur dans le backend de monitoring
cela doit venir de geonature mais il reste à trouver comment et comment résoudre le problème
j'essaierai de refaire des test en début de semaine prochaine

@maximetoma
Copy link
Contributor Author

okay pas de soucis, merci beaucoup !
Je ne sais d'où peut venir cette difficulté... Dans ce dit-module, il n'y a "que" 5000 données

@maximetoma
Copy link
Contributor Author

maximetoma commented Mar 17, 2022

Bonjour, je me permet de relancer la problématique :)
Pour le moment, je n'ai pas réussi à trouver de pistes...

Le plus curieux est que ça fasse ça sur un sous-module en particulier...

@camillemonchicourt
Copy link
Member

Si le soucis n'est que dans ce sous-module, il faut que tu analyses ce qu'il a de différent, au niveau de sa structure, de ses données, de ses volumes de données, des droits qui y sont configurés, etc... ?

@joelclems
Copy link
Collaborator

Bonjour maxime, peux tu nous envoyer la configuration du module ?

@maximetoma
Copy link
Contributor Author

maximetoma commented Mar 17, 2022

@camillemonchicourt Un comparatif du délai et du nombre de données pour le module entre mon serveur TEST et PROD (qui ont chacun une version différente du module et du nombre de données), après oui à voir sur la structure du code

Module Données totales du module Id site Id visite Nb visites du site chargé Nb d'obs du site chargé Nb d'obs de la visite chargée Délai d'affichage des visites du site chargé (s) Délai d'affichage des observations de la visite chargée (s)
Comptages décadaires [TEST] 47380 1193 161543 27 42 7 18,49 1,11
Comptages décadaires [PROD] 6100 1193 212661 13 16 4 23,59 2,22

@joelclems je t’envoie le module par mail, tu as une adresse pour te joindre ? :)

@joelclems
Copy link
Collaborator

joel.clement

cevennes-parcnational.net

@joelclems
Copy link
Collaborator

j'ai fait une coquille, c'est
cevennes-parcnational.fr

@camillemonchicourt
Copy link
Member

@maximetoma, n'hésite pas à partager la configuration de ton sous-module directement.
D'ailleurs on essaie de les partager au maximum pour pouvoir mutualiser des protocoles, les faire converger ou s'inspirer : https://github.com/PnCevennes/protocoles_suivi

A moins que cela soit sensible ? 🤔

@maximetoma
Copy link
Contributor Author

C'est prévu mais vu qu'il n'est pas tout à fait prêt, je n'osais pas forcement le mettre tout de suite, et je dois avoir l'aval de mes chefs je pense 🙂

@joelclems
Copy link
Collaborator

je tombe sur cette erreur à l'installation du module

@joelclems
Copy link
Collaborator

Execution du script synthese.sql
(psycopg2.errors.UndefinedTable) relation "gn_monitoring.cor_observation_observer" does not exist
LINE 75: FROM gn_monitoring.cor_observation_observer cvo

@joelclems
Copy link
Collaborator

avec 1 site et 6000 visites ça rame bonne nouvelle j'ai pu reproduire, reste à creuser pourquoi

@joelclems
Copy link
Collaborator

SELECT.txt

la requete des visite va chercher les realtions beaucoup trop loin il faut voir comment limiter cela pour gagner du temps

@maximetoma
Copy link
Contributor Author

maximetoma commented Mar 18, 2022

Execution du script synthese.sql (psycopg2.errors.UndefinedTable) relation "gn_monitoring.cor_observation_observer" does not exist LINE 75: FROM gn_monitoring.cor_observation_observer cvo

Ah oui j'ai oublié, j'ai créé une table perso sur le même fonctionnement que cor_visit_observer mais pour les observations. Et la vue de synthèse s'appuie dessus

la requete des visite va chercher les realtions beaucoup trop loin il faut voir comment limiter cela pour gagner du temps

Il s'agit de la requête principale de Monitoring qui va chercher toutes les informations ?

@joelclems
Copy link
Collaborator

Bonjour maxime, des changements dans les modèles des métadonnées font que l'on va chercher pas mal de chose dont on a pas besoin.

Peux tu essayer d'ajouter la ligne

TBaseVisits.dataset = DB.relationship(TDatasets)

Juste avant

@serializable
class TMonitoringVisits(TBaseVisits):
__tablename__ = "t_visit_complements"
__table_args__ = {"schema": "gn_monitoring"}
__mapper_args__ = {
'polymorphic_identity': 'monitoring_visit',
}

@maximetoma
Copy link
Contributor Author

Okay d'accord !

J'ai rajouté la ligne puis ai rechargé la config mais je n'ai pas d'amélioration du délai 😕

@joelclems
Copy link
Collaborator

est ce que tu as relancé l'application geonature ?

@maximetoma
Copy link
Contributor Author

maximetoma commented Mar 18, 2022

Ah oui c'est vrai qu'il faut relancer l'application en plus maintenant !

Ah oui effectivement c'est beaucoup mieux !!!!! :) Merci beaucoup !

EDIT: 4 secondes pour afficher 200 visites

@joelclems
Copy link
Collaborator

quand on change un fichier python il faut relancer l'application

c'est cool si ça marche tu as quel ordre de delai désormais ?

@joelclems
Copy link
Collaborator

ça reste un peu limte en temps et ça vaudrait le coup d'avoir du serveur side
je garde le ticket ouvert en attendant la release

@maximetoma
Copy link
Contributor Author

Ah d'accord !

Oui encore un petit délai mais cela reste beaucoup plus acceptable que 45secondes ou encore 1 ou 2 minutes

Qu'est ce que tu appelle le "serveur-side" ? C'est plus de côté de notre serveur ou du côté du code de GeoNature ?

@joelclems
Copy link
Collaborator

C'est par exemple le fat que pour le tableau on aurait pas besoin de charger les 200 visite mais seulement celles des 10 lignes que l'on affiche.

Cela impliquerai vraiment beaucoup de changements, mais on s'affranchirai du nombre de données présentes en base

@maximetoma
Copy link
Contributor Author

Ah oui effectivement, ça vaudrait peut être le coup... mais si c'est pas trop contraignant, ou alors pour un grosse MAJ de Monitoring....

Ce fonctionnement existe actuellement sur Occtax ?

@joelclems
Copy link
Collaborator

oui je dirai que c'est déjà le cas pour occtax

@camillemonchicourt
Copy link
Member

Oui c'est comme ça que fonctionne Occtax

@maximetoma
Copy link
Contributor Author

Okay merci :)
Du coup à voir dans quelles mesures on peut l'adapter à Monitoring effectivement....

maximetoma added a commit to maximetoma/gn_module_monitoring that referenced this issue Dec 20, 2022
En lien avec le ticket PnX-SI#142

Ce paramètre proposé par @joelclems améliore grandement les performances (chargement des occurrences quasi instantané versus 7 à 20 secondes sans). 
Après je ne sais pas s'il y a une grande répercution si on fixe ce bout de code dans la branche master... ? Mais j'ai remarqué lors de la dernière MAJ effectué qu'il n'y était pas :)
joelclems added a commit that referenced this issue Dec 28, 2022
@camillemonchicourt
Copy link
Member

A priori amélioré suite aux évolutions dans la 0.4.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants