Jetty: oejs.AbstractConnector:insufficient threads configured for SelectChannelConnector@0.0.0.0:8080 STARTING

Publié le 9 Mars 2012

Dans mon projet j'utilise un server Jetty embarqué pour pouvoir envoyer quelques requêtes HTTP et interrogé mon appli.

Le serveur n'est pas très solicité et donc il est configuré avec un thread pool de quelques threads seulement.

Je test sur mon PC local pas de problème, sur la machine de build non plus: tous les tests sont OK.

Super, c'est parti pour la mise en prod'. Et là le serveur démarre mais il ne traite plus aucune requête. La requête arrive au serveur mais il ne rend pas la main.

Bizarre... je jette un coup d'oeil dans les logs et je trouve la ligne suivante lors du démarrage du serveur:

oejs.AbstractConnector:insufficient threads configured for SelectChannelConnector@0.0.0.0:8080 STARTING

Mmmm ... je n'aurai pas assez de thread dans mon thread pool mais ça tournait très bien sur les machines de tests!

Un petit tour sur le net avec le message d'erreur mais je ne trouve pas beaucoup d'infos.

Du coup on tente un coup d'oeil dans le code source de Jetty: Et là surprise, dans le code du SelectChannelConector, on trouve:

setAcceptors(Math.max(1,(Runtime.getRuntime().availableProcessors()+3)/4));

Et oui la voilà la différence: en prod il y a beaucoup plus de core que dans nos environnements de tests! 

Il faut donc augmenter la taille du thread pool en conséquence ou spécifier explicitement le nombre d'acceptors avec

setAcceptors(nb);

Rédigé par Bliz

Publié dans #Java

Repost 0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article