Подробности...
Знания, не рожденные опытом - матерью всякой достоверности - бесплодны и полны ошибок.
(с) Леонардо да Винчи
Мозг и когнитивные функции
четверг, 25 октября 2007 г.
Паукобот
Подробности...
среда, 24 октября 2007 г.
четверг, 18 октября 2007 г.
пятница, 5 октября 2007 г.
Самураи Thread dump и deadlock'и
Те кто занимался серверным программированием в Java, вероятно, знакомы с многопоточностью и проблемами синхронизации доступа к общим данным. Создание "правильных" приложений, которые не путаются в своих же 'synchronize' блоках требует некоторой подготовки от разработчика. Хуже, когда, карта синхронизации усложняется за счет использования чужих библиотек и классов. Так например, при работе с JGroups'овым RPC диспетчером НЕ следует в его callback методах вызывать сам диспетчер, потому что это приводит к гарантированным мертвым блокировкам которые никакой штатный механизм не отловит (я говорю о JMX полезностях из JDK 1.5 и выше). Впрочем, вы сами в состоянии привести множество подобных примеров. Конечно, бывает и путаемся в своих же "семафорах".
И все же deadlock. Что мы обычно делаем в таких случаях? Да - всеми способами стараемся получить дамп потоков ибо только "глоток керосина может спасти смертельно раненного кота". Анализ этого дампа - есть задача банальная и не интересная, тем более скушная, чем больше вы в своей жизни "вылечили" по таким дампам чужих (за свои не так обидно) дедлоков. Вот, кстати, алгоритм анализа дампа потоков.
Так, а причем здесь самураи?
А вот причем - так называется один из тулов для облегчения нашей задачи по анализу дампа: Samurai 2.1.1. На страничке также доступен JNLP запуск для Samurai. Конечно же средств облегчающих задачу анализа предостаточно. Не буду заниматься их классификацией и описанием приведу лишь еще пару ссылок.
1.3 release of TDA -Thread Dump Analyzer
и JNLP запуск для TDA.
Ну и Eclipse plugin Lockness.
Удачи Вам и будьте внимательны.
Коггерентность данных и стандартные схемы
Очередной случай из жизни, столкнул меня с человеком имя которого останется неозвученным (не будем переходить на личности). И случай этот был связан с изобретением самопальной системы кеширования. При этом, результат получился не совсем нежизнеспособным. Помочь горю смогло изучение стандартных схем организации кешей. Огромное спасибо Крису Касперски, за внятное (на пальцах) описание озов MESI и прочего.
Подписаться на:
Сообщения (Atom)