| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Работа с сетью > Чат, тотальное зависание машины |
| Автор: Platon 24.5.2007, 15:41 |
| Здравствуйте, уважаемые. Ни за что бы не подумал, что на Java можно схватить такой косяк. Дело в том что все работало прекрасно до поры до времени, время шло, я тихонько расширял возможности и в какой то момент возникла проблема, при подключении удаленного клиента (т.е. не с локал-хоста, не со своего IP по локальной сети, или со своего глобального IP), а именно с чужой машины. Удивительно наблюдать картину, когда сервер виснет не как обычно подгружая процессор под 100% а просто остановив работу виндов напрочь, это что такое? неужели на Java ручками загребущими можно и до такого довести? Проверял работу сервера на 2-х машинах из них обе jvm 1.6, 1 jvm 1.5. Результаты всегда одинаковы, сервер благополучно проводит аутентификацию, а дальше виснет... |
| Автор: shimopus 24.5.2007, 17:22 |
| вообще "виснуть" понятие растяжимое.... Что именно происходит? Чем поведение отличается от загрузки проца на 100%? |
| Автор: Platon 24.5.2007, 17:36 |
| Вообще останавливается работа, можно сказать глобальный дед-лок, мышка никак не вращается, и экран застывает (может не так выразился) мышка не двигается совсем, никаких действий выполнить нельзя, все процессы останавливаются, только reset. Добавлено @ 17:37 OS Windows XP |
| Автор: Vurn 24.5.2007, 18:25 |
| При работе всегда делай отдельный тред на GUI (via invokeLater) и отдельный тред сокет-слушателя (который будет notify тред-обработки сообщений) Таким образом у тебя будет 3 треда как минимум - GUI, socket-listener, обработчик. И программа никогда не будет виснуть. |
| Автор: Platon 24.5.2007, 18:35 |
| Vurn, Извиняюсь конечно, но я уже писал, что у меня не виснет, а умирает вообще ОС. 2. ГУИ на сервере редко бывает, и у меня его нет. 3. и естественно что у меня каждое соединение клиентов уходит по тредам. не пойму что может вызвать вывод из строя всю ОСку? Добавлено @ 18:43 МОжет надо permssion policy прикрутить? Мало ли по умолчанию запрещен доступ с нелокальной машины, хотя повторюсь, до поры до времени работало. |
| Автор: Platon 25.5.2007, 07:48 |
| Новые подробности. Решил после зависания тачки на другом компе побаловаться, что он будет делать, мало ли серв не сдох, пишу, нет не работает, но самое что удивительное после 3 отправленных сообщений и клиент умер, причем умер так же как и сервер, т.е. парализовало всю ОС. вот те и на... |
| Автор: shimopus 25.5.2007, 12:16 |
| Думаю, что Javа тут не при чем. Скорее всего создается слишком большое количество потоков, из за чего JVM вытягивает все ресурсы системы. На 90% ошибка в коде. |
| Автор: Platon 26.5.2007, 00:00 |
К счастью я видать такой уникальный, что попадаю в 10 % ;) Думаю что тему стоит вообще затереть, бесполезная ветка, прошу прощения. Оказалось проблема была в ОС "виндовоз", после переустановки запускается отлично. Я сразу настаивал на вопросе "Может ли Java привести к тотальной остановке ОС?" не зависанию, а именно остановке. Проверял на 3500 одновременных запросах провести авторизацию, вроде все отлично, НО конечно в данном случае скидка, что авторизация идет с локальной машины, но с другой стороны, это как минимум 7000 потоков. |
| Автор: shimopus 26.5.2007, 10:19 |
Интересно, а как же машина клиента, которая тоже беспросветно умирала? Или он тоже запускался на твоей машине? |
| Автор: Platon 28.5.2007, 08:42 |
| Тоже интересно, но скорее всего обе машины были инфицированы, больше вариантов не нахожу. Вчера попробовал протестировать, попросил друзей в пределах города подключиться, целый день проболтали, все работало отлично. |
| Автор: Platon 29.5.2007, 20:14 |
| Мда, не прошло и 2-х дней та же история :( ну это же нереально! я не могу поверить что проблема в моем коде, слишком сильное влияние чата на ОС, такое полагаю можно сделать только на системном уровне, но никак не прикладном. |
| Автор: shimopus 29.5.2007, 22:12 |
| А может это и делается на системном... JVM явно пользуется системными вызовами. Например для частичной реализации многопоточности... |
| Автор: Platon 29.5.2007, 22:31 |
| Да, но я полагаю JVM бережет ОС от несанкционированных действий. А как же объяснить что 2 дня чат поработал и опять его заклинило? Что Java системно обращается скажем по четным дням к одним системным вызовам, по нечетным к другим? Обидно так получается, весело будет если я еще 2 дня подожду и опять заработает. я понимаю, когда сразу не работает, но через 2 дня? конечно не хочется сваливать, но это либо ОС либо JVM. |
| Автор: Ortega 30.5.2007, 09:26 |
| Судя по симптоматике (особенно - зависание через двое суток работы) - имеет место быть дед-лок. Хотя не исключено, что плодятся неубиенные потоки. Но дед-лок вероятнее. Java достаточно защищена от "дурака" (без обид, просто термин), но абсолютной защиты, как известно не существует. Посмотри внимательно на метки synchronized, скорее всего они где-то перекрываются. Говорю из собственного опыта, в свое время убил не один час на поиски этой гадости. |
| Автор: Platon 30.5.2007, 19:42 |
| Ну что вы все не поймете? Я который день говорю, что это не может быть дед-лок. не 2 суток бесперестанной работы, а просто 2 суток, 1 день полностью беседовали, вырубил комп, второй день серв в холостую проработал. Третий день, полдня поработал, кто-то ко мне приконнектился, и все, комп умер. при 3,5 тысячах потоках объем памяти сервера не превысил 30 мБ, и комп чувствовал себя бодренько, так что зря вы так. С синхронизацией я тоже разобрался, было время что не работало, но неработало, в плане того что в поток несколько писателей было. Я с дед-локами встречался, но они производили локальную остановку, но чтоб всю ОС, это как то импосибл. |
| Автор: Platon 30.5.2007, 20:09 | ||
Вот у меня иногда такие мессаги в любой проге вылетают в консоли IDEA:
не к добру это.... |
| Автор: batigoal 31.5.2007, 10:15 |
| У насэто сообщение было связано с использованием нативного кода. Когда перешли с Java 1.4 на 1.6, где поменялся API JVM, то имели это сообщение. |
| Автор: Platon 5.6.2007, 12:25 |
| Не хочется опять искать виноватых, но похоже проблема заключается в том, что после установки обновлений винды возникает такой эффект. |
| Автор: GSMD 14.6.2007, 15:24 |
| Стоит попробовать установить под тем же Linux для исключения момента влияния ОС. |
| Автор: Platon 5.12.2007, 21:52 |
| Вот еще 1 пример полного зависания системы. http://www.chessclub.com/helpcenter/interface/CoffeeHouse.html Вылечивается только кнопкой reset. |