войти зарегистрироваться

JAVAНепрерывный мониторинг JVM с помощью Zabbix

Предположим, у вас есть большое приложение написанное на Java. Это может быть web-сервлет размещенный в контейнере или standalone-сервис. В процессе разработки (да и во время эксплуатации) возникает необходимость отслеживать процессы, протекающие в JVM: работу garbage collector, использование памяти, жизненный цикл потоков, а так же иные специфичные для вашего проекта показатели по средствам MBean. Самый простой вариант — использовать профилировщик. Но увы, проблемы не случаются по расписанию, и невозможно заранее знать, когда нужно подключить профилировщик, а держать его постоянно включенным тоже не вариант. В таких случаях идеальное решение — непрерывный мониторинг. О нем и пойдет речь. Но для начала пара слов о классической профилировке.

JAVAРазмер Java объектов. Используем полученные знания

В предыдущей статье много комментаторов были не согласны в необходимости наличия знаний о размере объектов в java. Я категорически не согласен с этим мнением и поэтому подготовил несколько практических приемов, которые потенциально могут пригодится для оптимизации в Вашем приложении. Хочу сразу отметить, что не все из данных приемов могут применяться сразу во время разработки. Для придания большего драматизма, все расчеты и цифры будут приводится для 64-х разрядной HotSpot JVM.

Денормализация модели

Итак, давайте рассмотрим следующий код:
class Cursor {
    String icon;
    Position pos;
    Cursor(String icon, int x, int y) {
         this.icon = icon;
         this.pos = new Position(x, y);
    }
}
class Position {
    int x;
    int y;
    Position(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

А теперь проведем денормализацию:
class Cursor2 {
    String icon;
    int x;
    int y;
    Cursor2(String icon, int x, int y) {
        this.icon = icon;
        this.x = x;
        this.y = y;
    }
}

Казалось бы — избавились от композиции и все. Но нет. Объект класса Cursor2 потребляет приблизительно на 20% меньше памяти чем объект класса Cursor (по сути Cursor + Position). Такое вот не очевидное следствие декомпозиции. За счет ссылки и заголовка лишнего объекта. Возможно это кажется не важным и смешным, но только до тех пор, пока объектов у Вас мало, а когда счет идет на миллионы ситуация кардинально меняется. Это не призыв к созданию огромных классов по 100 полей. Ни в коем случаем. Это может пригодится исключительно в случае, когда Вы вплотную подошли к верхней границе Вашей оперативной памяти и в памяти у Вас много однотипных объектов.

Блог компании JelasticJelastic на Java Day SPB 2012

imageРады сообщить, что члены команды Jelastic Дмитрий Лазаренко и Марина Справа будут принимать участие в конференции разработчиков Java Day SPB 2012, которая состоится 10 февраля 2012 года. Мы приготовили для вас очень интересный доклад: «Один в поле не воин: как построить кластер GlassFish 3.1.1». Доклад состоится в зале «Stenberg» гостиницы Holiday Inn Московские Ворота (Санкт-Петербург, Московский проспект, 97а) на 17.45. Вы узнаете, как можно построить отказоустойчивый кластер серверов GlassFish. Будут рассмотрены такие вопросы, как регистрация серверов на балансировщике нагрузки, организация sticky sessions, репликация сессий между серверами, администрирование кластера, обновление приложений на кластере и дополнительное потребление ресурсов серверами в данной конфигурации. И конечно же увидите как это все работает на Jelastic.

Блог компании CiklumПоделись опытом и послушай Java-гуру на Сиклум Java Субботнике 11 февраля

Мы снова открываем сезон Сиклум Субботников в Киеве! Наш прошлый Сиклум Java Субботник в столице Украины был настоящим фуррором — его посетили 150 человек! Видя такой интерес и учитывая пожелания встретиться вновь, мы решили повторить :) и организовать еще одно полезное и приятное мероприятие для всех, кто программирует или только собирается начинать работать на Java.

По традиции, мы приглашаем всех желающих бесплатно посетить Сиклум Java Субботник 11 февраля в нашем киевском офисе

Блог компании JelasticGlassFish кластеризация в Jelastic

Как вам уже известно, GlassFish — высоконадежный Java EE сервер приложений с полной поддержкой промышленной кластеризации и широким спектром функций.
До недавнего времени Glassfish использовался в Jelastic Java PaaS просто как отдельный сервер, теперь же мы поддерживаем все функции этого сервера, включая высокую доступность (HA).
image
Мы сберегли «родную» кластерную архитектуру GlassFish, которая основана на концепции административного домена. Административные домены состоят из кластеров и инстансов, контроль над которыми осуществляется с помощью DAS (Domain Administration Server).

Вы можете управлять центральным репозитарием с помощью админ консоли. Это легкий в использовании GUI, который поддерживает все фичи, доступные в Glassfish. DAS управляет Java инстансами домена, а GMS (Group Management Service) отвечает за предоставление информации о кластере и его инстансах.

JAVAJava DNS API, Wikipedia и twitter-марафон в одном флаконе из песочницы

Некоторое время назад я решал задачу автоматической покупки домена. Нужно было оформить в виде библиотеки (jar и файл настроек), которая использовалась бы в корпоративном приложении на Java. Я начал поиски DNS провайдеров с public API. Желательно, чтобы API были попроще, и домены подешевле — такой баланс оказалось не просто найти.

NoSQLПодводные камни в Project Voldemort

Используется в одном из наших проектов такая штучка как Project Voldemort.
Если вкратце, то это весьма любопытная реализация key-value storage aka NoSQL database, реализованная в недрах Linkedin. То есть даешь ему ключик и значение, и оно быстро в памяти это хранит/отдает и на диске тоже сохраняет. Интересна она, в принципе, не этим, а своей реализацией кластеризации, неплохой скоростью, ну тем что часто используется в проектах на Java. В принципе, подробного обзора этой БД на Хабре не было, и можно как нибудь сделать. Но рассказать я тут хочу пока о одних граблях, с которыми пришлось столкнуться.

JAVA«Разбор полетов» — episode 9 — Индусоустойчивость

Творческий коллектив редакции подкаста «Разбор полетов» представляет вашему вниманию очередной девятый выпуск разговорно-болтологического IT-тематического подкаста;.
В этом выпуске:
прослушан 177 раз

JAVASOAP-сервер на Java при участии Apache CXF и Spring из песочницы

imageЗа последнее время появилось несколько статей, рассказывающих о протоколе SOAP, а также описывающих процесс создания сервера на различных языках и платформах. Продолжим тему. В этой статье будет описываться создание сервера на языке Java с использование Apache CXF и Spring Framework. Предполагается, что читатель уже имеет общее представление об упомянутом протоколе, а также о работе с ant и maven. Для того, чтобы сделать задачу немного интереснее, добавим начальное условие: дана WSDL-схема, описывающая веб-сервис. Итак…
(Картинка из статьи на Wikipedia.)

JAVASwing. Десять полезных простых вещей

image

Хочу поделиться недавним опытом разработки апплетов на Swing и рассказать про подводные камни, приемы найденные и использованные в процессе работы.