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

Connexion aux bases de données Firebird Discussion :

[FB 1.5.2] Requetes tres lentes via VPN


Sujet :

Connexion aux bases de données Firebird

  1. #1
    Membre régulier
    Profil pro
    Ingenieur developpement
    Inscrit en
    Septembre 2002
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingenieur developpement

    Informations forums :
    Inscription : Septembre 2002
    Messages : 175
    Points : 106
    Points
    106
    Par défaut [FB 1.5.2] Requetes tres lentes via VPN
    Bonjour,

    J'ai installer un serveur FireBird 1.52 sur un poste distant (autre ville) et je me connecte en VPN sur ce réseau. J'arrive à me connecter sur ma base à partir de mon client mais j'ai des temps de réponse calamiteux.
    Exemple pour un petit programme qui va me constituer des fichiers en extrayant des info dans la base, il met peut être 30 s si je le fait sur le pc en local et 40 mn à travers le VPN.

    Est ce normal qu'il y ai une si grande difference?

    Des personnes interrogent ils une base firebird à distance avec des temps corrects?

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    Quel est le débit du VPN ?

    Quelle est le volume transféré ?

  3. #3
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Oui c'est normal.

    Mais j'ai deux remarques :

    1/30 secondes en normal, c'est Enorme pour une requete locale. Peut être il y a t'il moyen d'optimiser cette requete ?

    2/Ce qui est long via le VPN ce sont les échanges d'information. Donc pour que ca aille plus vite il faut réduire le nombre d'échange et la quantité de données. Dans la mesure du possible faites une procédure stoquée qui sera donc appelée par le client et qui renvéra le résultat. Ainsi un seul échange se fera entre le client et le serveur.

    Sinon vous pouvez essayer de remplacer vos composants IBX (ou autres) par ceux de FIBPlus : http://www.devrace.com/en/fibplus/features.php ces composants sont beaucoup plus optimisés et d'après la description permettent le travail avec des connexions modem. (gère même les déconnexion etc..)

    Autre solution (plus lourde a mettre en place), il faudrait utiliser une autre technologie, comme les services Web, une architecture ntiers.

    Si vous essayez les composants FIBPlus, je serai heureux que vous nous fassiez part du résultat de vos test.

  4. #4
    Membre régulier
    Profil pro
    Ingenieur developpement
    Inscrit en
    Septembre 2002
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingenieur developpement

    Informations forums :
    Inscription : Septembre 2002
    Messages : 175
    Points : 106
    Points
    106
    Par défaut
    Voici l'exemple d'une requète envoyée.

    Elle me ramène 3722 enregistrements sur mon PC local en un peu plus de 1s et mettra peut être 10 mn via VPN en connexion adsl 1024/128.

    Déjà sur un réseau local elle mettra 10 fois plus de temps. Je n'ai pas fait encore tous les tests pour le calcul des temps de réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    select
      ETPPROD.N_IDETPPROD,
      ETPPROD.N_IDPLANDISPOPROD,
      PLANDISPOPROD.N_IDCLIENT_R,
      PLANDISPOPROD.N_IDFOURNI_R,
      ETPPROD.D_ETPPROD,
      ARTVG.N_IDVARIETE,
      SERIE.N_IDSERIE,
      SERIE.S_NOSERIE,
      PF.S_LBLPF,
      ETPCONT.N_IDCONTVG as N_IDCONTVGETPCONT,
      PF.N_IDCONTVG as N_IDCONTVGPF,
      ETPPROD.F_QTETOTAPRODUIRE,
      ETPCONT.S_IDETP,
      ETPCONT.N_NOORDETPCONTCYCLEV,
      ETPCONT.N_IDETPCONT,
      TR_EPLPRODCHOISI.S_IDEPLPROD,
      TR_EPLPRODCHOISI.N_QTECONTVGEPLPRODCHOISI,
      sum(TR_REGLELIBEEPLPROD.N_QTEVENDUREGLELIBEEPLPROD) SumQteVenduEpl ,
      ETPCONT.F_DENSITECONTVG,
      ETPCONT.S_LBLDENSITECONTVG,
      ETPCONT.F_NBCPSANTCPSE,
      ETPCONT.F_PDSGRAINEPLAQUE,
      ETPCONT.B_EXPRIMEGRAINE,
      ETPPROD.S_SUIVIETPPROD,
      PLANDISPOPROD.S_SUIVIDISPOPROD,
      ETPCONT.N_IDSUPCULT,
      ETPCONT.F_DELAIETPSUIV,
      ETPCONT.N_NBGOUTTEURPARCONT,
      ETPCONT.N_NBPERSONNESETPCONT,
      ETPCONT.N_IDMA,
      ETPCONT.N_IDEQUIPEMENTMA,
      ETPCONT.S_LBLETPCONT,
      B_GererQteEnFonctionALivrer
    from ETPPROD
         JOIN PLANDISPOPROD
              ON PLANDISPOPROD.N_IDPLANDISPOPROD = ETPPROD.N_IDPLANDISPOPROD
         JOIN SERIE
              ON SERIE.N_IDSERIE = PLANDISPOPROD.N_IDSERIE
         JOIN PF
              ON PF.N_IDPF = PLANDISPOPROD.N_IDPF_R
              JOIN ARTVG
                   ON PLANDISPOPROD.N_IDARTVG = ARTVG.N_IDARTVG
              JOIN PF
                   ON PLANDISPOPROD.N_IDPF_R = PF.N_IDPF
         JOIN ETPCONT
              ON ETPPROD.N_IDETPCONT = ETPCONT.N_IDETPCONT
            JOIN ETP
              ON ETPCONT.S_IDETP = ETP.S_IDETP
              JOIN TR_EPLPRODCHOISI ON ETPCONT.N_IDETPCONT = TR_EPLPRODCHOISI.N_IDETPCONT
              JOIN EPLPROD ON EPLPROD.S_IDEPLPROD = TR_EPLPRODCHOISI.S_IDEPLPROD
              LEFT OUTER JOIN REGLELIBERATION on REGLELIBERATION.N_IDETPCONT =  ETPCONT.N_IDETPCONT
              LEFT OUTER JOIN TR_REGLELIBEEPLPROD on (TR_REGLELIBEEPLPROD.N_IDREGLELIBERATION = REGLELIBERATION.N_IDREGLELIBERATION and TR_REGLELIBEEPLPROD.S_IDEPLPROD = TR_EPLPRODCHOISI.S_IDEPLPROD)
    where
      ETPPROD.S_STATUTPRETPPROD = 'R'
      and S_SuiviDispoPROD <> 'T'
      and S_SuiviDispoPROD <> 'ANN'
     and (
    ETP.S_IDETP
     =
    'SEM'
    )
      and ETPPROD.D_ETPPROD between '06/27/2005'and'02/22/2006'
      GROUP BY
      ETPPROD.N_IDPLANDISPOPROD,
      ETPCONT.N_NOORDETPCONTCYCLEV,
      ETPPROD.N_IDETPPROD,
      PLANDISPOPROD.N_IDCLIENT_R,
      PLANDISPOPROD.N_IDFOURNI_R,
      ETPPROD.D_ETPPROD,
      ARTVG.N_IDVARIETE,
      SERIE.N_IDSERIE,
      SERIE.S_NOSERIE,
      PF.S_LBLPF,
      ETPCONT.N_IDCONTVG,
      PF.N_IDCONTVG,
      ETPPROD.F_QTETOTAPRODUIRE,
      ETPCONT.S_IDETP,
      ETPCONT.N_IDETPCONT,
      TR_EPLPRODCHOISI.S_IDEPLPROD,
      TR_EPLPRODCHOISI.N_QTECONTVGEPLPRODCHOISI,
      ETPCONT.F_DENSITECONTVG,
      ETPCONT.S_LBLDENSITECONTVG,
      ETPCONT.F_NBCPSANTCPSE,
      ETPCONT.F_PDSGRAINEPLAQUE,
      ETPCONT.B_EXPRIMEGRAINE,
      ETPPROD.S_SUIVIETPPROD,
      PLANDISPOPROD.S_SUIVIDISPOPROD,
      ETPCONT.N_IDSUPCULT,
      ETPCONT.F_DELAIETPSUIV,
      ETPCONT.N_NBGOUTTEURPARCONT,
      ETPCONT.N_NBPERSONNESETPCONT,
      ETPCONT.N_IDMA,
      ETPCONT.N_IDEQUIPEMENTMA,
      ETPCONT.S_LBLETPCONT,
      B_GererQteEnFonctionALivrer
    order by
      ETPPROD.N_IDPLANDISPOPROD,
      ETPCONT.N_NOORDETPCONTCYCLEV,
      ETPPROD.N_IDETPPROD

    autre remarque: J'ai certaines requètes qui peuvent mettre plus de 2 mn pour me retourner le resultat (en local). Elle ont peut etre une quinzaine de jointures. Si je supprime certaines contraintes d'intégrité, elle peuvent s'executer en 3 ou 4 s. Y a t il moyen de faire autrement que de supprimer ces contraintes.

  5. #5
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    3722 lignes n'est pas représentatif d'un volume de données tout dépend de la taille des colonnes sélectionnées.

    10 colonnes integer versus 10 colonnes en CHAR (200), il y a un rapport de 1 à 100...

    Concernant le débit du VPN, il est fatalement inférieur à celui de la connexion évoquée, puisqu'une partie de la bande passante est réservée pour la gestion du VPN.
    De plus, le débit en réception est de 1 Ko, mais quel est le débit en émission du serveur ?

  6. #6
    Membre régulier
    Profil pro
    Ingenieur developpement
    Inscrit en
    Septembre 2002
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingenieur developpement

    Informations forums :
    Inscription : Septembre 2002
    Messages : 175
    Points : 106
    Points
    106
    Par défaut
    Je dirais qu'un enregistrement est d'environ 1000 Octets. soit 17 Integer, 4 VARCHAR (200), 1 VC(20), 3 VC(3), 5 Num(15, 3) 1 SmallInt.

    coté serveur, du 1024kb/256kb.

    Si j'imagine 1000 * 4000 lignes = 4 Mo, la moitié de la bande passante utilisé, soit 128 kb = 16 ko/s,
    4000 / 16 = 250 s = 4,16 mn

    Je suis loin des 20 à 30 mn de constitution.

    (j'utilise DELPHI7 avec les DBExpress)

  7. #7
    Membre régulier
    Profil pro
    Ingenieur developpement
    Inscrit en
    Septembre 2002
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingenieur developpement

    Informations forums :
    Inscription : Septembre 2002
    Messages : 175
    Points : 106
    Points
    106
    Par défaut
    La reception coté client est de 1 Mb/s pas de 1ko/s.

    Joyeux Noël qd même

  8. #8
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    Citation Envoyé par gudul
    La reception coté client est de 1 Mb/s pas de 1ko/s.
    (et j'ai encore rien bu)

    Bon Noël aussi

    Sinon, je sèche vu le différentiel théorique//pratique de réception des données; même en prenant en compte les bits d'acquittement

    Le serveur est dédié à ton appli, ou bien héberge t'il d'autres applis qui pourraient générer du trafic réseau ?
    Quel protocole est utilisé ?

  9. #9
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Comme je l'ai signalé, les composants IBX sont assez bavards. Ce qu'il faut savoir c'est qu'une requete, envoyé au serveur, il n y a pas que la SQL qui circule et la reponse... Il y a tout un tas de métadonnées systèmes qui permettent un bon fonctionnement.

    Je réviens donc à la charge en vous invitant à tester FIBPlus qui est normalement moins bavard, plus optimisé et utilise un cache local pour les métadata.

    Votre problème est double :
    1-Vos requetes sont lourdes, il faudrait donc chercher à les optimiser (taille des données restisutées, peut etre meme lui indiquer le plan a utiliser car parfois FB ne fait pas le bon choix)
    2-Vous voulez utiliser un reseau bas débit (128k maxi en emission du client et 256k en emission du serveur), il faut donc que vous utilisez des protocoles/outils plus léger en consomation réseau.

    Faites un teste avec FIBPlus et dites nous le gain que vous avez constaté.

Discussions similaires

  1. [WD17] Appli très lente via vpn, très rapide en local évidemment :)
    Par droliprane dans le forum WinDev
    Réponses: 19
    Dernier message: 17/09/2014, 16h03
  2. Comportement curieux requete tres lente
    Par olibara dans le forum Développement
    Réponses: 16
    Dernier message: 06/06/2014, 17h30
  3. Requete tres lente
    Par keny10 dans le forum Requêtes
    Réponses: 11
    Dernier message: 14/07/2009, 13h47
  4. Requete sur tableAdaptor tres lente
    Par djuju dans le forum VB.NET
    Réponses: 4
    Dernier message: 25/03/2007, 03h39
  5. Réponses: 6
    Dernier message: 29/09/2004, 12h45

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