Проблема запуска в java.net.bindexception не может назначить запрошенный адрес - PullRequest
6 голосов
/ 27 мая 2011

В настоящее время я тестирую сервер с автоматическим тестовым клиентом, который имитирует большое количество пользователей.И сервер, и клиент написаны на Java.Клиент открывает соединение TCP / IP для каждого пользователя.И сервер, и клиент работают в Ubuntu Linux, клиент работает в 11.04, а сервер - в 10.04.

Тестирование прошло успешно до 27000 одновременно открытых соединений, после чего я решил перейти на 36000 (ресурсы серверов и клиентовна 27000 это было не совсем так, поэтому я решил сделать чуть больший прыжок). Когда я попытался запустить тест для 36k, я получил следующее исключение на стороне клиента :

  • java.net.BindException: не могу назначить запрошенный адрес

Насколько я знаю на 36k, у меня все еще должны быть свободные порты, так как на обеих машинах больше ничего не работает, и tcp ограничивает номер порта 2 ^ 16, который равен 65536. Теперь, посколькуВ Linux я также установил количество открытых файлов для пользователя равным 100k с помощью ulimit -n 100000. Но я все еще получаю то же исключение.

Мне интересно, что еще может быть возможной причинойдля упомянутого исключения, или linux каким-либо другим способом ограничивает количество исходящих соединений?

Заранее спасибо,

Danijel

1 Ответ

5 голосов
/ 27 мая 2011

По умолчанию Linux выбирает динамически назначенные порты из диапазона 32768..61000.Другие доступны для статического назначения, если вы привязываетесь к определенному номеру порта.Диапазон можно изменить, если вы хотите, чтобы большее количество портов было доступно для динамического назначения, но просто будьте осторожны, чтобы не включать порты, которые используются для определенных необходимых вам служб (например, 6000 для X11).Также не следует разрешать динамическое назначение портов <1024, поскольку они являются привилегированными.Чтобы проверить или изменить диапазон: </p>

$ cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000

# echo "16384 65535" > /proc/sys/net/ipv4/ip_local_port_range
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...