web-dev-qa-db-fra.com

java.net.SocketException: Aucun espace tampon disponible (nombre maximal de connexions atteint?): JVM_Bind

Tomcat exécute une webapp sous Windows. Après quelques jours (sous très faible charge), l'exception mentionnée dans le titre commence à apparaître dans les journaux, aucune nouvelle connexion ne peut être établie à partir de ce moment, la seule solution est alors de redémarrer le serveur.

Environnement:

  • Dernier Tomcat 6
  • Windows Server 2008 R2
  • Mise à jour JDK 6 30
  • SQL Server 2008
  • Authentification Kerberos

Preuves recueillies à ce jour:

  • netstat ne montre aucune quantité excessive de connexions
  • ProcessExplorer ne montre aucune quantité excessive de descripteurs de fichiers ouverts
  • l'utilisation de la mémoire principale du système est moyenne
  • L'utilisation du tas JVM est moyenne
  • le redémarrage de Tomcat ne résout pas le problème

Questions ouvertes:

  • si nous fuyions des connexions, ne devraient-elles pas apparaître dans netstat?
  • un redémarrage du serveur d'applications ne devrait-il pas résoudre le problème, car le système d'exploitation devrait libérer toutes les ressources de processus?
  • existe-t-il un moyen de retracer le problème jusqu'à son origine? Par exemple. installer un logiciel de surveillance, peut-être quelque chose de similaire à lsof etc.?

Je suis à court d'idées, toutes les astuces sont appréciées!

38
Michael Böckling

La raison pour laquelle nous avons obtenu cette erreur est un bogue dans Windows Server 2008 R2/Windows 7. Le noyau fuit les sockets de bouclage en raison d'une condition de concurrence critique sur les machines avec plusieurs cœurs, ce correctif résout le problème: http: // support.Microsoft.com/kb/2577795

56
Michael Böckling

J'exécutais Alfresco Community 4.0d sur Windows 7 64 bits et j'ai eu les mêmes symptômes et erreurs.

Le problème a été résolu avec le correctif de Microsoft: " Les sockets du noyau fuient sur un ordinateur multiprocesseur qui exécute Windows Server 2008 R2 ou Windows 7 " ( http://support.Microsoft.com/kb/2577795 ) (c'est-à-dire la réponse de Buddy Casino (voir ci-dessous)).

Une autre observation que je voudrais ajouter est que les connexions Windows (Internet Explorer, Bureau à distance, etc.) fonctionneraient à nouveau environ 5 à 10 minutes après l'arrêt des services Alfresco.

Alfresco est un excellent produit et j'avais peur de devoir le supprimer. Heureusement, stackoverflow est venu à la rescousse!

Merci encore à la réponse de Buddy Casino.

Boo à la personne qui a voté contre la question.

11
mvanle

Nous voyons la même chose sur une configuration similaire, W2008R2, Tomcat 6.0.29, Java 1.6.0.25. Redémarrer Tomcat n'aide pas, mais redémarrer le serveur lui-même le fait, au moins pendant un certain temps . Après la dernière fois, nous avons commencé à arrêter des services individuels et pensons que nous l'avons limité à une instance d'Alfresco qui s'exécute également sur le serveur ou aux services de l'agent Backup Exec. Une fois ces services (quatre au total) arrêtés, le les applications dans Tomcat ont recommencé à fonctionner, bien que nous voyions toujours l'erreur de tampon/connexions dans le journal stdout, ce qui était étrange. Il faudra attendre que le problème revienne avant de confirmer quels sont les coupables, ce qui peut aller de quelques jours à une semaine ou plus.

Y a-t-il une chance que vous exécutiez Alfresco ou BE sur votre serveur?

1
J Jost