Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Работа с сетью > Java SocketServer + 300 клиентов = тормоза |
Автор: chiffa 24.5.2017, 17:52 | ||||
Всем привет. Столкнулся с проблемой: при большом количестве подключений >300 начинает подвисать соединенения на стороне клиента и по итого отваливает по таймауту. Алгоритм работы: Клиент подключился - отправил запрос на сервер о идентификации (вот здесь и виснет - ждет ответ) - сервер обработал запрос - записал в базу - отправил ответ. На каждое подключение выделяется отдельный поток. База не залипает и отвечает нормально. Сервер создаю так:
и сам обработчик:
Может кто подскажет, в чем может быть проблема? Куда копать? Как тестить?.... Заранее благодарен за помощь! |
Автор: SVN74 24.5.2017, 20:08 |
невидно закрытия сокетов, а также не забывайте применять flush в буферах |
Автор: LSD 24.5.2017, 20:23 |
1. Помимо непосредственного закрытия сокетов, не стоит забывать что сокет еще остается какое-то время открытым. Тут можно попробовать поставить SO_LINGER в 0 если соединение идет по локалке. 2. 300 потоков это довольно много, тормозить может и на этом тоже. Если 300 соединений это нормальная ситуация, то стоит перейти на неблокирующий IO, например Netty. |