Actualmente estoy probando un servidor con un cliente de prueba automático que simula una gran cantidad de usuarios. Tanto el servidor como el cliente están escritos en Java. El cliente abre una conexión tcp/ip para cada usuario. Tanto el servidor como el cliente se ejecutan en Ubuntu Linux, el cliente se ejecuta en 11.04 y el servidor en 10.04.Problema al ejecutar java.net.bindexception no se puede asignar la dirección solicitada
Las pruebas fueron buenas hasta 27000 conexiones simultáneas abiertas, después de eso decidí saltar a 36000 (los recursos de servidores y clientes no eran realmente todo lo que se usó en 27000, así que decidí hacer un salto un poco más grande). cuando traté de ejecutar la prueba de 36k Me dio la siguiente excepción en el cliente:
- java.net.BindException: No se puede asignar la dirección solicitada
Por lo que conozco en 36k todavía debería tener puertos libres ya que no mucho más se está ejecutando en ninguna máquina y tcp limita el número de puerto en 2^16 que es 65536. Ahora, dado que es Linux, también configuré la cantidad de archivos abiertos para el usuario a 100k con ulimit -n 100000. Pero todavía recibo la misma excepción.
Me pregunto qué otra cosa podría ser una posible causa para la excepción mencionada, o linux de alguna otra forma limita el número de conexiones salientes?
Gracias de antemano,
Danijel
Gracias a mark4o por la explicación y la solución, estuvo en lo cierto. – Zapkhiel