![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Итак, есть программа, где в отдельном потоке идет:
До недавнего времени все работало хорошо, но чего-то теперь время от времени accept висит, и через telnet все висит (показывает, что соединение установлено, но на самом деле дальше accept дело не идет). Потом где-то через пару минут (если повезет) accept принимает соединение. Все это работает под Fedora Core 5, и не ясно в чем проблема. Что самое интересное, что на том же сервере стоит программа с таким же циклом, правда на другом порту (12015), и принимает соединения на порядок быстрее. Может кто-то как-то что-то ломает, но загрузка процессора на нуле, как и оперативка... Добавлено через 3 минуты и 47 секунд Что самое интересное, уже несколько раз менял номер порта. Буквально на неделю помогает - толпа людей скачивает новый клиент и начинается все снова. Странно. Иногда выдерживает 100-150 людей (соединений-потоков), а вот сейчас еле вытягивает 12 человек. Я точно знаю, что около 50 человек пытаются соединиться, а он принял одного, висит секунд 10, принял другого, подумал секунд 30, еще принял. Уже и сервер перезапускал - ничего не помогает. Не ясно, то-ли какая-то особенность java (не справляется с большим наплывом людей), то-ли кто-то что-то атакует. |
|||
|
||||
Vurn |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.5.2007 Репутация: 1 Всего: 3 |
Я бы сначала делил на две части возможных проблем
(а) серверсокет глюкает, не принимае коннект (б) виснет в части создания треда под вновь принятый коннект Выяснял бы тупо - выключил бы всю логику обработки сокетов (создание тредов и т.п.) и устроил бы стресс-тест по подключениям. Если работает быстро на порту - смотрел бы код обслуживания сокетов, затык в нем. Профайлером бы проверил в каком участке вешается. Добавлено через 3 минуты и 18 секунд Еще бы подумал - может передалаться на NIO? Может обвязаться вокруг Apache MINA? |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Так я и указал, что виснет сам accept. Другими словами перед ним и после него выставил System.out.println. Может было бы лучше и NIO, но хотелось бы разобраться.
|
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
В NIO тот же самый accept.
Проверьте, закрываются ли ранее созданные соединения. |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Я, можно сказать, стартую сервер с нуля. То есть сделал reboot, сразу запустил два приложения на разные порты. Одно работает, другое - тормозит. Да и то, что тормозит, там во втором потоке другой порт прослушивается - тоже без задержек.
|
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Можно анализатором трафика (Wireshark например) посмотреть соединения на проблемный порт извне. Но проще запустить тоже приложение на другом компьютере или на том же компьютере, но на другом порту и подсоединиться извне. Это позволит убедиться, что в самом приложении нет ошибок. Или попробовать подсоединиться с локального клиента, чтобы исключить влияние внешней сети.
Это сообщение отредактировал(а) COVD - 6.5.2009, 19:13 |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Да, я писал, что меняю порт, и помогает на некоторое время. Появились подозрения:
1. Больной хостер. Хотя кому надо через некоторое время заставлять порты подвисать как-то... 2. Особые клиенты. Может злоумышленники, может я чего-то не знаю (как в свое время не знал, что write не такая уж быстрая функция). Также что-то слышал о статусе CLOSE ON WAIT или что-то подобное... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |