Une application de database est-elle dangereuse?

Nous avons un certain nombre de services Web exécutant Tomcat qui utilisent hibernate / mysql. Je soupçonne que certains d'entre eux ont des pools de connection configurés incorrectement, car, après plusieurs heures, certaines applications individuelles sont épuisées et cessent de répondre. Nous avons apporté des modifications au service de pool de connections (dans ce cas, C3P0), mais nous devons encore laisser les anciennes versions des applications sur le server pour une compatibilité ascendante.

En tout cas, je soupçonne que ces applications nuisent également à la stabilité globale de Tomcat. Environ une fois par semaine, notre server cesse de répondre entièrement et ne peut pas servir même les pages statiques. Après le redémarrage du service, tout fonctionne encore quelques jours environ. La search à travers les journaux révèle à peine des exceptions non saisies, alors je ne suis pas sûr de ce qui pourrait causer Tomcat. Rien de remarquable n'est répertorié dans les journaux d'erreur avant que le server ne réagisse, malheureusement.

Nous envisageons également de passer à JBoss, car il est un peu plus «créatif», mais je ne suis pas convaincu que cela résoudra ces problèmes. Existe-t-il des raisons impérieuses de changer de plate-forme web, ou dois-je procéder à un debugging plus loin dans nos propres applications web? De plus, est-il possible que Webapp bloque le server d'application en faisant quelque chose de mauvais?

Configuration du server: Windows 2003 Server, Tomcat 6.0.18 + blazeDS 3.0, Hibernate 3.2.

4 Solutions collect form web for “Une application de database est-elle dangereuse?”

Je ne pense pas que personne n'aura la réponse à votre problème, mais seulement des prospects et des idées. Voilà quelque:

  • vous avez besoin de robots qui vérifieront la santé de chaque partie de votre service . (test d'une connection unique à votre database, obtention d'une page Web statique, obtention d'une page Web dynamic …). De cette façon, vous verrez ce qui se dégage en premier ou le time de réponse augmente.

  • Avez-vous un service de surveillance / stats ? Vous devez suivre le "nombre de connections actives de la database", "nombre de sessions Web actives", "nombre de threads Tomcat", "memory disponible", CPU …

Mon conseil, il n'y a pas de process Tomcat, car ils sont bloqués en attente d'une ressource (peut-être une connection à la database, ou ils sont juste une boucle infinie!). Les outils que j'ai énumérés précédemment vous aideront à comprendre pourquoi votre server meurt lentement chaque semaine.

  1. exécutez netstat sur votre server et regardez le nombre de connections au server de database (et vérifiez le niveau de votre pool et la capacité du server de database).
  2. exécutez jstack sur votre server d'application et coupez / grep / sortinger pour voir ce que font vos discussions.

Si le service des pages statiques ne nécessite aucun access à la database, il semble peu probable qu'il s'agisse d'un problème de ressource de database en tant que tel. Il se peut que tous les threads groupés soient bloqués quelque part, comme l'attente du lecteur de database ou dans une impasse. La première chose que je ferais, c'est get un instantané des traces de stack avec jstack . Vous pouvez consulter le process avec visualvm ou jconsole .

Je voulais simplement append qu'il est assez courant pour les problèmes de locking de table avec les tables MyISAM peut facilement amener les connections DB et provoquer l'attente de ces résultats pour s'asseoir et s'asseoir.

Vous voudrez peut-être consulter la list des process MySQL pour voir s'il y a beaucoup de requêtes assises dans un état verrouillé.

# mysqladmin processlist

— ou —

mysql> show processlist;

Si le locking est le problème, vous voudrez voir si la modification du moteur de stockage sur les tables de problèmes de MyISAM à InnoDB est possible.

Si vous installez la sonde lambda webapp (obtenez la version 1.7 bêta), vous pouvez get une surveillance au niveau du thread; garder un œil sur cela vous dira quand les threads sont bloqués en attente de la database, ainsi que d'une série d'autres diagnostics utiles.

C'est un peu vieux mais fonctionne toujours bien dans les dernières versions de Tomcat.

  • Ddd Marco illustrbeandice MarcoAachea MarcoAdMMMTjoyéesAeaMMMMTMdice av MarcoTMMMTjoyettehaach
  • Utilisation d'un file py comme point d'extrémité API sur un server hébergé
  • Les meilleures pratiques? Envoyer un courrier à partir d'une application Web
  • Comment configurer un server Web hors de chez moi?
  • Cryptage Web sur LAN non contrôlé
  • Azure Web Apps avec Java, MySql, système de files
  • Longue réponse HTTP et réponse instantanée
  • Azure Web App vs Site Web
  • améliorer notre stratégie de deployment
  • MaxClients continue d'être dépassé sur le server d'applications Web
  • tunnel basé sur IP ou ssh pour mysql distant?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.