2009-10-29 7 views
1

Parfois (assez rarement) lorsque je me connecte à une instance en cours d'un com.sun.net.httpserver.HttpServer, je reçois un message de «connexion refusée».com.sun.net.httpserver.HttpServer nombre maximal de connexions?

Quelqu'un sait pourquoi cela pourrait être? Y a-t-il une limite de thread au nombre de connexions qu'il peut gérer? Puis-je l'augmenter? Merci. -r

Répondre

2

De :

Lors de la liaison à une adresse et un port nombre, l'application peut également spécifier un paramètre de retard entier. Cela représente le nombre maximal de connexions TCP entrantes que le système mettra en file d'attente en interne. Les connexions sont mises en file d'attente lorsqu'elles sont en attente d'être acceptées par le serveur HttpServer . Lorsque la limite est atteinte, d'autres connexions peuvent être rejetées (ou éventuellement ignorées) par l'implémentation TCP sous-jacente . Réglage la bonne valeur du carnet de commandes est un compromis entre l'utilisation efficace des ressources dans la couche TCP (non sa mise en trop élevé) et permettant un débit adéquat des demandes entrantes (non trop bas réglage).

Vous voyez peut-être cela.

Vous avez également la possibilité de définir un exécuteur en utilisant setExecutor() pour. L'exécuteur par défaut peut avoir moins de threads configurés que nécessaire, et un ThreadPoolExecutor correctement configuré peut fonctionner.

+0

setExecutor - merci beaucoup - demandez-vous quelle est la configuration par défaut ... [les docs java, comme d'habitude, avec "une implémentation par défaut est utilisée"] – rogerdpack

+0

Je viens de rencontrer un comportement différent par défaut sur deux versions d'OpenJDK (Ubuntu 12.04 et ArchLinux - "1.7.0_21" vs "1.7.0_15"): sur Ubuntu cela a fonctionné comme prévu mais sur ArchLinux la valeur par défaut est apparemment monothread? Configurer l'exécuteur pour utiliser un pool de threads a résolu le problème. – Joseph

Questions connexes