Максимальное количество сокетов подключений одного процесса UNIX - PullRequest
2 голосов
/ 01 сентября 2010

У меня есть сервер Java (1 процесс), который порождает поток для каждого входящего соединения.Я знаю, что существует ограничение дескриптора файла 1024, которое компилируется в ядро.

Существует ли ограничение на количество соединений сокетов, которые может поддерживать 1 процесс?

Ответы [ 2 ]

4 голосов
/ 01 сентября 2010

В Linux взгляните на /proc/sys/fs/file-max.Вы можете отобразить в нем свое собственное значение.

Также убедитесь, что вы увеличиваете пределы пользователя: ulimit -n

В BSD это будет sysctl kern.maxfiles и sysctl kern.maxfilesperproc

1 голос
/ 01 сентября 2010

Помимо ограничений дескриптора файла ОС, указанных hroptatyr, вы также можете убедиться, что вы используете повышенное значение для невыполненного соединения в сокете слушателя.Это позволит поставить больше соединений в очередь, прежде чем ОС вернет сообщение «Соединение отказано», если ваше серверное приложение на мгновение станет занятым и не сможет достаточно быстро отвечать на входящие соединения.

Если вы используете ServerSocket в Java вы можете указать желаемое отставание в качестве аргумента для конструктора:

ServerSocket server = new ServerSocket(listenPort, 50);
...