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

Delphi Discussion :

Performances des webservices


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de adaneels
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2006
    Messages : 236
    Par défaut Performances des webservices
    Bonjour tout le monde,

    Quelle méthode d'invocation de webservices est la plus stable d'après vous?


    Je vous pose la question parce que j'utilise httprio depuis un bon moment, mais avec des tests de performance, je m'aperçois que cette méthode a ses limites.

    Je m'explique :
    - j'utilise un webservice écrit en delphi win32, implémentant une interface héritée de IInvokable. Il y a une méthode SetCompo(a, b, c : string) : integer; stdcall;
    - mon application cliente a un httprio auquel je file l'url à attaquer puis je consomme la méthode du webservice.

    Tout marche parfaitement.
    Je passe aux tests de performance.
    J'appelle 5000 fois de suite la méthode SetCompo. Ca plante au bout de 4000 en levant une erreur "SOAPHTTPException", la connexion au webservice est plantée.

    Méthode pas propre qui fonctionne : je mets un Sleep(60) (60ms.) avant l'invocation, ça passe.
    Du coup, chaque appel à la méthode mets 95ms a s'exécuter au lieu de 35ms, pas top mais ça passe

    Avez-vous une idée de la meilleure façon de procéder ??
    (faire des blocs pour réduire le nombre d'invocations, utiliser autre chose que httprio, ...?)

  2. #2
    Membre chevronné
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Par défaut
    Salut,

    Le connexion est plantée ? si tu fais un try catch... pour recommencer from scratch en cas de problème ? ça fonctionne ?

    As-tu des traces côté serveur ? si oui, y a-t-il eu 3999, 4000 ou 4001 appels ?

  3. #3
    Membre éclairé
    Avatar de adaneels
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2006
    Messages : 236
    Par défaut
    [/QUOTE]
    Citation Envoyé par Whiler
    Le connexion est plantée ? si tu fais un try catch... pour recommencer from scratch en cas de problème ? ça fonctionne ?
    Oui, j'ai tenté un truc dans le genre (ça essaye jusqu'à tant que ça passe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Repeat
      Try
        mon_invocation_de_methode;
        NotCrash:= True;
      Except
       NotCrash:= False;
      end; //try
    Until NotCrash;
    Mais une fois que l'erreur est levée, elle revient souvent, comme si le serveur est arrivé au bout de ses pompes et demandait un temps de repos (alors qu'il n'en a pas eu besoin pour les 4000 invocations avant).
    D'où l'idée de laisser un temps de repos de quelques millisecondes à chaque fois.

    Citation Envoyé par Whiler
    As-tu des traces côté serveur ? si oui, y a-t-il eu 3999, 4000 ou 4001 appels ?
    Pas de traces côté serveur, tout va bien pour lui.
    J'avais noté 4309 appels au départ de l'investigation, mais ça m'a l'air d'être un peu aléatoire (suivant performances de la machine hôte, si le proc et/ou de l'interface réseau sont déjà utilisés, etc.)

  4. #4
    Membre chevronné
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Par défaut
    Tu es en train de stresser ton application... le temps de latence est logique pour simuler des temps de réflexion utilisateur (qd je n'aurai plus besoin de penser que par palier de 60ms, ça le fera ) ...

    Ton application cliente.. c'est juste pour tester le serveur, ou au contraire pour tester un client ? Pourquoi 5000 appels enchaînés ? Cela me semble beaucoup pour une simulation.. mais c'est peut-être demandé par tes exigences...

  5. #5
    Membre éclairé
    Avatar de adaneels
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2006
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2006
    Messages : 236
    Par défaut
    Citation Envoyé par Whiler
    Tu es en train de stresser ton application...
    Je vois qu'on a regarder le même webcast ce midi

    Citation Envoyé par Whiler
    le temps de latence est logique pour simuler des temps de réflexion utilisateur (qd je n'aurai plus besoin de penser que par palier de 60ms, ça le fera ) ...
    Je te comprends. Je pensais cela auparavant

    Citation Envoyé par Whiler
    Ton application cliente.. c'est juste pour tester le serveur, ou au contraire pour tester un client ? Pourquoi 5000 appels enchaînés ? Cela me semble beaucoup pour une simulation.. mais c'est peut-être demandé par tes exigences...
    L'application cliente est une console qui permet de charger un projet dans le projet. Un projet doit pouvoir contenir plusieurs milliers d'éléments.

  6. #6
    Membre chevronné
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Par défaut une idée...
    Ne serait-il pas possible de créer un DTO/XML qui contiendrait un ensemble de composants (peut-être pas tous... mais au moins par paquet ) ?
    Histoire d'alléger le nombre d'appels ?

Discussions similaires

  1. Performance des Datasets
    Par Nafanga dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/10/2005, 00h49
  2. Compatibilité des WebServices
    Par diesel dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 14/09/2005, 09h46
  3. performances des virtual functions
    Par xxiemeciel dans le forum C++
    Réponses: 2
    Dernier message: 25/07/2005, 17h24
  4. Performance des vertex array
    Par Mathieu.J dans le forum OpenGL
    Réponses: 13
    Dernier message: 25/06/2004, 10h47
  5. [XMLRAD] Security des WebModules et/ou des WebServices
    Par Lux interior dans le forum XMLRAD
    Réponses: 4
    Dernier message: 18/12/2002, 17h09

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