![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Здравствуйте, уважаемые.
Ни за что бы не подумал, что на Java можно схватить такой косяк. Дело в том что все работало прекрасно до поры до времени, время шло, я тихонько расширял возможности и в какой то момент возникла проблема, при подключении удаленного клиента (т.е. не с локал-хоста, не со своего IP по локальной сети, или со своего глобального IP), а именно с чужой машины. Удивительно наблюдать картину, когда сервер виснет не как обычно подгружая процессор под 100% а просто остановив работу виндов напрочь, это что такое? неужели на Java ручками загребущими можно и до такого довести? Проверял работу сервера на 2-х машинах из них обе jvm 1.6, 1 jvm 1.5. Результаты всегда одинаковы, сервер благополучно проводит аутентификацию, а дальше виснет... |
|||
|
||||
shimopus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 25.8.2006 Репутация: нет Всего: 1 |
вообще "виснуть" понятие растяжимое.... Что именно происходит? Чем поведение отличается от загрузки проца на 100%?
Это сообщение отредактировал(а) shimopus - 24.5.2007, 17:24 |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Вообще останавливается работа, можно сказать глобальный дед-лок, мышка никак не вращается, и экран застывает (может не так выразился) мышка не двигается совсем, никаких действий выполнить нельзя, все процессы останавливаются, только reset.
Добавлено @ 17:37 OS Windows XP Это сообщение отредактировал(а) Platon - 24.5.2007, 18:39 |
|||
|
||||
Vurn |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.5.2007 Репутация: 1 Всего: 3 |
При работе всегда делай отдельный тред на GUI (via invokeLater) и отдельный тред сокет-слушателя (который будет notify тред-обработки сообщений)
Таким образом у тебя будет 3 треда как минимум - GUI, socket-listener, обработчик. И программа никогда не будет виснуть. |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Vurn,
Извиняюсь конечно, но я уже писал, что у меня не виснет, а умирает вообще ОС. 2. ГУИ на сервере редко бывает, и у меня его нет. 3. и естественно что у меня каждое соединение клиентов уходит по тредам. не пойму что может вызвать вывод из строя всю ОСку? Добавлено @ 18:43 МОжет надо permssion policy прикрутить? Мало ли по умолчанию запрещен доступ с нелокальной машины, хотя повторюсь, до поры до времени работало. Это сообщение отредактировал(а) Platon - 25.5.2007, 07:44 |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Новые подробности. Решил после зависания тачки на другом компе побаловаться, что он будет делать, мало ли серв не сдох, пишу, нет не работает, но самое что удивительное после 3 отправленных сообщений и клиент умер, причем умер так же как и сервер, т.е. парализовало всю ОС. вот те и на...
|
|||
|
||||
shimopus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 25.8.2006 Репутация: нет Всего: 1 |
Думаю, что Javа тут не при чем. Скорее всего создается слишком большое количество потоков, из за чего JVM вытягивает все ресурсы системы. На 90% ошибка в коде.
|
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
К счастью я видать такой уникальный, что попадаю в 10 % ;) Думаю что тему стоит вообще затереть, бесполезная ветка, прошу прощения. Оказалось проблема была в ОС "виндовоз", после переустановки запускается отлично. Я сразу настаивал на вопросе "Может ли Java привести к тотальной остановке ОС?" не зависанию, а именно остановке. Проверял на 3500 одновременных запросах провести авторизацию, вроде все отлично, НО конечно в данном случае скидка, что авторизация идет с локальной машины, но с другой стороны, это как минимум 7000 потоков. |
|||
|
||||
shimopus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 25.8.2006 Репутация: нет Всего: 1 |
||||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Тоже интересно, но скорее всего обе машины были инфицированы, больше вариантов не нахожу.
Вчера попробовал протестировать, попросил друзей в пределах города подключиться, целый день проболтали, все работало отлично. |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Мда, не прошло и 2-х дней та же история :( ну это же нереально! я не могу поверить что проблема в моем коде, слишком сильное влияние чата на ОС, такое полагаю можно сделать только на системном уровне, но никак не прикладном.
|
|||
|
||||
shimopus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 25.8.2006 Репутация: нет Всего: 1 |
А может это и делается на системном... JVM явно пользуется системными вызовами. Например для частичной реализации многопоточности...
|
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Да, но я полагаю JVM бережет ОС от несанкционированных действий. А как же объяснить что 2 дня чат поработал и опять его заклинило? Что Java системно обращается скажем по четным дням к одним системным вызовам, по нечетным к другим? Обидно так получается, весело будет если я еще 2 дня подожду и опять заработает. я понимаю, когда сразу не работает, но через 2 дня?
конечно не хочется сваливать, но это либо ОС либо JVM. |
|||
|
||||
Ortega |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 5.11.2005 Где: Харьков, Украина Репутация: нет Всего: 6 |
Судя по симптоматике (особенно - зависание через двое суток работы) - имеет место быть дед-лок. Хотя не исключено, что плодятся неубиенные потоки. Но дед-лок вероятнее.
Java достаточно защищена от "дурака" (без обид, просто термин), но абсолютной защиты, как известно не существует. Посмотри внимательно на метки synchronized, скорее всего они где-то перекрываются. Говорю из собственного опыта, в свое время убил не один час на поиски этой гадости. --------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Ахренеть ![]() Неудивительно что ОС подвисала от такого количества потоков. Если в приложении создается больше 20-30 потоков, то это верный признак того, что оно неправильно спроектировано. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Ну что вы все не поймете? Я который день говорю, что это не может быть дед-лок.
не 2 суток бесперестанной работы, а просто 2 суток, 1 день полностью беседовали, вырубил комп, второй день серв в холостую проработал. Третий день, полдня поработал, кто-то ко мне приконнектился, и все, комп умер. при 3,5 тысячах потоках объем памяти сервера не превысил 30 мБ, и комп чувствовал себя бодренько, так что зря вы так. С синхронизацией я тоже разобрался, было время что не работало, но неработало, в плане того что в поток несколько писателей было. Я с дед-локами встречался, но они производили локальную остановку, но чтоб всю ОС, это как то импосибл. |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Вот у меня иногда такие мессаги в любой проге вылетают в консоли IDEA:
не к добру это.... |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 2 Всего: 151 |
У насэто сообщение было связано с использованием нативного кода. Когда перешли с Java 1.4 на 1.6, где поменялся API JVM, то имели это сообщение.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Не хочется опять искать виноватых, но похоже проблема заключается в том, что после установки обновлений винды возникает такой эффект.
|
|||
|
||||
GSMD |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 28.9.2005 Репутация: нет Всего: 1 |
Стоит попробовать установить под тем же Linux для исключения момента влияния ОС.
|
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |