IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HyperFileSQL Discussion :

Lenteur entre HFSQL classique vers serveur


Sujet :

HyperFileSQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Points : 150
    Points
    150
    Par défaut Lenteur entre HFSQL classique vers serveur
    Bonjour

    Lors du passe en HFSQL classique en serveur les performances avec communication à la BDD augmentent par 10 (hlitpremier, hlitrecherche, pour tout, hfiltre…).
    Nous avons recherché sur les forums et testé plusieurs choses
    - Désactivé calcule statistique sur les clés
    - Jouer avec les Cache des indexe et cache disque (1 - mit à la valeur recommandé, 2 – augmenté, 3 diminué => cela n’a rien changé)
    - Mis à jour de serveur HFSQL, la dernière version de 23
    - Recommandation des optimisations de windev : https://doc.pcsoft.fr/?9000176
    Il y a même une personne qui met des guillemets à ça variable connexion passer dans la houvreconnexion() qui lui augmente ces performance mais pas chez nous.

    Si vous avez des pistes ou des idées de recherche, je suis preneur.

    Cordialement Law

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 161
    Points : 9 111
    Points
    9 111
    Par défaut
    Normalement (j'ai bien dit normalement), le hfcs est plus rapide. Par contre, il a a quelques points à vérifier.
    - Quelle est ton infrastructure réseau (câblage, nombre d'appareils,...) vers ton serveur ? Traffic important ?
    - Quelle "puissance" a ton serveur ? Si tu essayes de faire une requête vers un ordinosaure anorexique chargé comme un mulet, ça va être lent...
    - Quelle est la taille de ta bdd ?

    Le meilleur test est d'isoler un pc + 1 serveur sur un switch indépendant (et bien câblé) pour faire des tests.

    Ce sont des pistes. Je ne prétends pas avoir la science infuse.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Points : 150
    Points
    150
    Par défaut
    Bonjour

    Je suis désolé de ne pas répondre à tes questions.
    Voici mes tests
    Test 1 : poste client avec la base sur mon serveur
    - HlitRecherche
    - HFSQL classic = 1 ms
    - HFSQL server = 1 ms
    - HlitPremier
    - HFSQL classic = 15 us
    - HFSQL server = 1 ms
    - Pour tout (40 000)
    - HFSQL classic = 70s814ms
    - HFSQL server = 68s935
    - hexecuterequeteSQL (40 000 élément) (select * from client)
    - HFSQL classic = 832 us
    - HFSQL server = 5 ms
    Test 2 : poste serveur avec la base sur mon serveur
    - HlitRecherche
    - HFSQL classic = 804 us
    - HFSQL server = 618 us
    - HlitPremier
    - HFSQL classic = 14 us
    - HFSQL server = 457 us
    - Pour tout (40 000)
    - HFSQL classic = 31s948ms
    - HFSQL server = 30s663ms
    - hexecuterequeteSQL (40 000 élément) (select * from client)
    - HFSQL classic = 784 us
    - HFSQL server = 2 ms

    Qu’1 pour tout de 40 000 élément soit beaucoup plus lent qu'une requête renvoyant 40 000 élément pour moi c'est logique

    Maintenant qu'on dise que le HFSQL client/serveur est aussi performant que le classique, au vu des résultats, je ne suis pas d'accord.

    La même requête met 5 fois plus de temps. Certaine instruction prennent aussi 5 fois plus de temps.

    Alors soit j'ai un problème de configuration soit le client/serveur est beaucoup moins performant que le classique.

    J'ai récupéré un projet qui a plus de 10ans et pour bien faire il faut tout réécrire. Mais vu que l'executerequeteSQL est 5 fois plus lent.
    J’ai refait les tests sans passer par le réseau, avec la base classic et manta sur le poste. Les temps sont 2 fois plus rapides pour le pour tout des 40 000.

    En tout cas pour code équivalent le classic va beaucoup plus vite que le Client/serveur. Maintenant je n'exclus pas un problème de configuration

    Cordialement Loïc

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 161
    Points : 9 111
    Points
    9 111
    Par défaut
    Je n'ai pas ton code et connais encore moins ton projet. Il y a quelques modifications à effectuer/vérifier dans le code : les paramètres lors de l'exécution/ parcours des requêtes. Cela peut jouer sur les perfs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI PAS HExécuteRequêteSQL(MaSourceDeDonnees, MaConnexion, hRequêteSansCorrectionHF, MaRequete) ALORS
    	Erreur(HErreurInfo(hErrComplet))
    	HAnnuleDéclaration(MaSourceDeDonnees)
    FIN
    HLitPremier(MaSourceDeDonnees,hSansRafraîchir)
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Points : 150
    Points
    150
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI PAS HExécuteRequêteSQL(MaSourceDeDonnees, MaConnexion, hRequêteSansCorrectionHF, MaRequete) ALORS
    	Erreur(HErreurInfo(hErrComplet))
    	HAnnuleDéclaration(MaSourceDeDonnees)
    FIN
    HLitPremier(MaSourceDeDonnees,hSansRafraîchir)
    - Oui nous avons vu pour les Hlitpremier qu'il faut mettre hsansrafairchir sinon ré-exécute la requête
    - pour le hececuterequete nous ne mettons pas la connexion. nous avons fait le test avec et cela augmente le temps de 100ms sur 6 secondes.

    C'est un vieux projet et il y a une requête qui parcours plusieurs centaines de client et pour chaque client plusieurs litrecherche a plusieurs sous fichier.
    Maintenant en classic cela prends moins 1 seconde et en client/serveur 6 secondes.
    Alors il y a peu être un goulot d'étranglement en Client/serveur qui pénalise les performances.

    Mais pour moi, si le classic et serveur ont les mêmes performances, il n'y a pas besoin de refaire le code. Après il y a peut être un mauvais paramétrage.

    Cordialement Law

  6. #6
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 161
    Points : 9 111
    Points
    9 111
    Par défaut
    Oui, peut-être un paramétrage à améliorer.

    Vu que tu fais pas mal de parcours sur différents fichiers/tables, je te conseille de regarder si tu ne peux pas en charger en mémoire avec des tableaux associatifs.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Points : 150
    Points
    150
    Par défaut
    Bonjour

    Merci pour tes réponses. pour l'instant je ne sais pas ce que je vais faire.

    J'en conclue que le HFSQL classic est plus performant en temps de réponse que le HFSQL client/serveur et de loin. Que ce soit une multitude d'appel à la base ou une grosse requête.

    Par contre plusieurs HFSQL client/serveur est plus fiable car en classic, si plusieurs utilisateurs en même temps sur la base, les temps de performance peuvent s'écroulé voir le logiciel ne pas réponds.

    Ce que je trouve étrange, c'est que nous avons 3 grosses applications qui ont plus de 10ans et développé de la même façon avec énormément d'appel à la base. Et sur 2 applications le passage de classic en client/serveur n'a rien changé en performance mais plus stable pour le multi-utilisateur. Et sur la 3ieme les performances sont horrible entre classic et client/serveur, c'est pour cela que je pense qu'il y a un problème de paramétrage.

    Cordialement Law

  8. #8
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 161
    Points : 9 111
    Points
    9 111
    Par défaut
    Il est possible que si l'analyse est ancienne, la structure des fichiers ne soit pas tip top (genre vieux fichiers 5.5,...).
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

Discussions similaires

  1. [HF21] Migration vers serveur HFSQL
    Par Pete_Eur dans le forum HyperFileSQL
    Réponses: 3
    Dernier message: 17/01/2018, 10h49
  2. [ASP.NET/AJAX] Lenteur entre serveur et client
    Par guepard dans le forum AJAX
    Réponses: 3
    Dernier message: 18/03/2011, 22h23
  3. [Domaine] Problème lenteur entre 1 serveur et 1 client
    Par Bomba dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 25/04/2007, 19h15
  4. Réplication de base Client vers Serveur
    Par lil_jam63 dans le forum Administration
    Réponses: 3
    Dernier message: 18/06/2005, 22h57
  5. Probleme de migration vers serveur dédié
    Par sylvain_neus dans le forum Hibernate
    Réponses: 13
    Dernier message: 23/04/2004, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo