Будет ли ServerSocket (порт) и многопоточность работать хорошо для 5000 одновременных обращений клиентов? - PullRequest
0 голосов
/ 20 июля 2010

Я работаю с классом serversocket и открываю потоки, когда новый клиент попадает на serversocket:

serverSocket = new ServerSocket(port);

while (true) {
        Socket clientSocket = serverSocket.accept();
        new Thread(this).start();//opening multiple threads
}

, но когда 5000 клиентов попадают в этот сокет сервера, на стороне клиента появляется ошибка: java.net.ConnectException: Connection refused: connect

Скажите, пожалуйста, как лучше открыть сокет сервера, чтобы он мог принимать все клиентские соединения? промежуток времени между одновременными клиентскими подключениями составляет 1 миллисекунду.

1 Ответ

1 голос
/ 28 июля 2010

Есть 2 вещи, которые вы должны обязательно проверить.

Ограничение дескриптора файла.В системе на основе Linux вы можете проверить это с помощью ulimit.

Во-вторых, Serversockets имеют размер очереди ожидания, если у вас больше соединений, ожидающих, чем размер очереди, они будут немедленно отклонены.Вы должны попробовать конструктор ServerSocket (port, backlog).

...