begin process at 2010 02 09 15:45:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Réseau & internet

 > 

Servlet

 > 

Servlet rapide en local mais très lent à distance


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Servlet rapide en local mais très lent à distance

dimanche 29 juin 2008 à 21:15:32 | Servlet rapide en local mais très lent à distance

thedestiny

Bonjour,

Cela fait plusieurs jous que je planche sur le problème et je coince un peu donc je viens soliciter votre aide.
Je développe une application client (J2SE pour le riche, GWT pour le light) qui doit récupérer des informations continue au sein d'une base de données MySQL en interrogeant une servlet (requête HTTP classique) qui se chargera de récupérer les informations de la base, de les mettre en forme puis de générer la réponse sous la forme d'un fichier XML qui sera parsé par les différents clients. Ca reste une architecture 3 tiers relativement classique.

Mon problème, c'est qu'en local, l'envoi d'une requête + traitement prend entre 60 et 200ms selon le volume d'informations. Mais après quelques tests, à distance ça se gatte car on ne descend pas sous la barre des 9000ms, comme-ci les clients devaient impérativement attendre 9 secondes avant de continuer l'execution.
J'ai essayé divers solutions sans succès: ajout du header Connection: close, au niveau du servlet, passage de Glassfish à Tomcat, envoi de la connexion en utilisant directement les sockets au lieu de la classe URL, rien y fait. Donc si vous avez des choses à me faire tester je vous en serai très reconnaissant!

Amicalement,
The Destiny
dimanche 29 juin 2008 à 21:26:56 | Re : Servlet rapide en local mais très lent à distance

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Salut,

9 secondes, ca correspond à l'envoi de la requête au serveur, le traîtement de cette dernière, l'exécution de ta servlet (connection à la base, récupèration des données, formattage des données au bon format) et enfin, l'envoi de la réponse au client pour qu'il puisse la traîter.

en local, les 200 ms ne correspondent qu'à l'exécution de la servlet. Tu aura beau optimiser au maximum l'éxécution de la servlet, tu n'y gagnera pas les 9000 ms !

Ce que tu oublie de nous dire, c'est : est-ce que les données transitants entre le serveur et le client sont importantes... si tu dois envoyer plusieurs Mo par exemple, ca n'a rien d'étonnant !

Tu devrais plutôt envisager d'optimiser le volume de données allant du serveur vers le client : utilisation de JSon à la place de XML par exemple, faire des requêtes AJAX asynchrone plutôt que des requêtes HTTP "classique" synchrone, etc.
______________________________________
DarK Sidious
lundi 30 juin 2008 à 09:39:47 | Re : Servlet rapide en local mais très lent à distance

thedestiny

Merci pour la réponse déjà ;)

En gros tu résumes bien le mécanisme:
Envoi d'une requête POST/GET - Traitement de la requête par le servlet - Interrogation de la bdd (la connexion se fait au lancement de la servlet) - Formattage des données - Génération du contenu RDF (format basé sur XML) - Parsing de la réponse par le client - Affichage des infos

Les données qui transitent sont actuellement de l'ordre de la 10aine voir 100aine de ko.. A l'avenir il pourrait éventuellement y avoir des réponses de plusieurs mo d'où mon inquiètude... (les derniers servlets que j'ai fait, même s'ils étaient moins "lourd" ne prenait pas autant de temps à s'executer)

Le protocole HTTP est imposé du fait que le servlet doit pouvoir communiquer avec le client malgré les proxy, les routeurs, les pare-feu etc... qui trainent sur le réseau.

A priori, rien que pour se connecter à la servlet, cela prendrait 4 secondes :/

Amicalement,
The Destiny
lundi 30 juin 2008 à 12:49:54 | Re : Servlet rapide en local mais très lent à distance

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Salut,

Donc tu n'as guère le choix : cela vient de l'infrastructure du réseau en lui même : 4 secondes pour que la servlet commence son éxécution, et 4 secondes pour la requête de retour, + quelques ms pour le traîtement par la servlet... tu tombe sur environ 9 secondes bizarrement ;)

AJAX, ce n'est que des requêtes HTTP, mais se faisant de façon asynchrone. Ca ne changera pas grand chose au niveau proxy, parefeu, etc, mais ca te permettra surtout de faire des requêtes HTTP un peu plus légères.
______________________________________
DarK Sidious


Cette discussion est classée dans : local, servlet, informations, rapide, distance


Répondre à ce message

Sujets en rapport avec ce message

pb de servlet [ par orely15081982 ] Bonjour,j'ai un pb pour laisser mon appli java en local .sur le serveur elle se lance nickelmais en local la console java me relance plein d'erreurs.. configuration des routeurs à distance [ par itry ] Objectif : Permettre la configuration de routeurs du labo cisco à partir d'un poste distant sur le réseau interne de l'INT. Principe : Chaqu ouverture de fichier depuis une servlet [ par gregxyz ] Bonjour,   j'ai un formulaire dans une page jsp qui redirige vers ma servlet,   dans cette servlet je genere un flux excel avec POI et ensuite je lire une image renvoyer par une servlet avec un navigateur??? [ par asetti ] slt, j'ai une servlet qui créé une courbe avec jFreeChart et qui l'a renvoie sous forme de graphique. (mon navigateur l'insere avec les balise d'image courbe dans un servlet [ par progrima ] Bonjour tout le monde , dans le cadre d'un projet fin d'etude je dois réaliser un traitement qui extrait des données d'une base de donnée et qui affic un EJB peut-il faire accès à une Servlet ? [ par yngwaar ] Bonjour, pour une application java utilisant des EJB, nous rencontrons des problèmes et l'une des solutions serait la suivante, mais je ne sais pas s Probleme Connxion base de donnée ACCESS via JSP/SERVLET [ par fartman2001 ] voila, je debute completement avec les servlets et jsp, et on me demande à l'aide d'une jsp et/ou d'une servlet de me connecter à une base de donnée A Obtenir les informations de version d'un programme [ par dekortic ] Bonjour, je travaille actuellement sur un programme de gestion et je butte sur le problème suivant: Je ne parviens pas à afficher dans une boite de di Afficher les informations de versions et les différentes propriétés du programme (auteur, copyright, titre etc.) [ par dekortic ] Bonjour, je travaille actuellement sur un programme de gestion et je butte sur le problème suivant: Je ne parviens pas à afficher dans une boite de d Créer un traducteur avec servlet JSP et EJB [ par fanfan78 ] Bonjours à tous,Dans un cadre scolaire j'aimerais développer un traducteur permettant à des utilisateurs de saisir un terme en anglais et en retour d'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales