Je vous explique mon problème : J’ai développé une application web qui, sur mon serveur de développement, fonctionne plutôt bien.
J’ai donc fourni le fichier .WAR à une personne qui se charge de le mettre en production, ailleurs.
Et là, c’est le drame. Bizarrement, mon application devient super lente. Par exemple, lorsqu’elle doit afficher une liste, même petite, ça prend au moins 35 secondes, alors que chez moi, c’est quasiment immédiat.
Je doute que le problème vienne de la base de données, dans la mesure où nous attaquons la même. De plus, la BD n’est pas hebergée chez moi, donc normalement il n’y a pas de grosses différences entre les 2 configurations au niveau du réseau.
Là, je me dis que comme j’utilise Tomcat (4.1.31) et un JDK 1.4.2, peut-être que ça joue, vu que le serveur de prod’ utilise un JBoss (4.0.3 SP1) avec une JVM 1.5.0_01-b08.
Nous avons installé notre propre JBoss, mais chez nous aucun souci particulier de performances !
Pourtant, niveau matériel le serveur de prod n’a rien à se reprocher. Il s’agit d’un Sunfire V240 avec 8 Go de RAM (alors que mon serveur “n’est qu’un” PIV-3Ghz avec 2Go de RAM).
A noter également que le serveur JBoss héberge une dizaine de WAR, plus ou moins utilisés, mais qu’a priori aucun d’eux n’a de problème de performances.
J’avais noté que 500 Mo étaient attribués à JBoss. J’ai demandé à ce qu’on lui attribue 1 Go, ce qui a été fait. Mais cela n’a rien changé au problème !
Franchement, je commence à ne plus avoir de pistes. D’après vous, quelles peuvent être les causes d’une telle perte de performances ?
Dans les logs de JBoss, concernant mon application, il ne semble pas y avoir de choses anormales.
Ca pourrait etre un soucis de timeout reseau… verifie bien que toutes les machines sur lesquelles ton serveur d’appli va se connecter sont bien connectables (hesite pas a faire des pings, des telnet sur les ports, ainsi de suite). Verifie qu’il n’y pas de firewall qui devrait pas y etre. Et verifie /etc/hosts : j’ai deja vu des trucs louches sur certains OS par defaut (genre localhost qui ne pointe pas sur 127.0.0.1…)
Et ben t’es dans la merde !
Non sans rire, régler des pbs de perf prend pas mal de temps (et il faut etre rigoureux et méthodique).
Va falloir auditer ton archi de prod pour voir qu’est ce qui est au taquet : CPU, RAM, I/O, network, DB, pool de connexion, … ? Ca peut te mettre sur la piste, ensuite il faut utiliser des outils de profiling Java plus spécialisés, qui te permettent de dire combien de temps on passe par méthode/classe/… et d’identifier le bon gros bottleneck ^^
Ah oui, 2 - 3 précisions :
Le serveur de prod’ se trouve (a priori) à Budapest. Ensuite, la seule chose auquelle j’ai accès personnellement, c’est la web-console de JBoss.
Sinon, pour la configuration réseau, je pense qu’elle est bonne dans la mesure où le serveur est déjà utilisé par d’autres applis et personne ne s’est plaind de mauvaises perfs…
Idem pour l’optimisme… trouver pourquoi, qui, comment risque d’être une vraie partie de plaisir.
Ton serveur de dev, c’est un vrai serveur qui utilise le vrai reseau ou un serveur local?
On sait jamais, ça peut être tout simplement une connerie de réglages réseau du genre QoS ou autre chose dans le même ton ( mais là ça sort de mon champ de compétence donc il est fort probable que j’écrive des conneries )