вторник, 3 марта 2015 г.

Правильная платформа для Java EE приложения или как Линукс оказался в 3 раза медленее z/OS

Ваш покорный слуга написал еще одну статью на Хабрахабр - Правильная платформа для Java EE приложений: как z/OS + DB2 оказались в 3 раза быстрее Linux + Oracle.

Краткое резюме: очень быстро мигрировали Java EE приложение, использующее Hibernate, на мейнфрейм и провели сравнительное тестирование, с одной стороны данное приложение на zLinux + Oracle (2 LPAR), с другой - оно же на z/OS + DB2 (1 LPAR). Вариант на z/OS + DB2 работал быстрее в 3 раза. Конфигурация выбрана исходя из требований заказчика, для которого выполняли тестирование, но в принципе соответствует реальным практикам, почему-то именно так и разворачивают - на Linux стараются вынести каждую подсистему на свою виртуальную машину, на z/OS - весь стек разворачивается вместе, тем самым используются примущества операционной системы, в частности Cross-Memory Services - механизм, позволяющий из одного адресного пространства (WebSphere Application Server) обратиться к другому (DB2) с помощью нескольких машинных команд, минуя планировщик ОС. Преимущества подхода перед типичным кодом межпроцессной коммуникации (IPC), содержащем сотни, а то и тысячи машинных инструкций, да к тому же выполняющем обращения к ядру, очевидны любому инженеру, знакомому с операционными системами чуть глубже, нежели на уровне "интерфейс унылый/интерфейс неунылый".

Отдельно отмечу, что исключительно расчетная часть на Java под z/OS выполнялась быстрее на 25%, что является отдельным приветом сторонникам мнения "Java на мейнфрейме тормозит и вообще".

P.S. Очень распространенное заблуждение, что zLinux выполняется только на z/VM. В данном случае и z/OS и zLinux выполнялись на LPAR'ах, VM в тесте не участвовала.

UPD: Хабраэксперты не подкачали, адекватные комментарии и претензии затерялись в ворохе: "Мы веруем в Линуха святого, а вы говорите, что он в чем-то хуже? Вы все врети, вы - сурковскаяпропаганда!!!" Грамотность аудитории оставляет желать лучшего, но это - уже наша недоработка. Основная претензия - разнесение подсистем на линуксе по разным LPAR'ам, но кто виноват, что линуксоиды так деплоят. В целом интерес к теме прослеживается и это не может не радовать.

UPD2: С нетерпением жду реакции анонимных аналитиков с ЛОРа.

Понравилось сообщение - подпишитесь на блог

понедельник, 23 февраля 2015 г.

А как выглядит эта ваша z/OS?

Прежде всего стоит отметить, что настраивать панельки и приложения z/OS можно по-всякому, мейнфрейм - это штучная вещь и каждый системный программист может изменять настройки системы так, чтобы они максимально соответствовали бизнес-целям использующего его предприятия. Я расскажу о том, как выглядит одна из доступных мне систем. Думаю, читателям блога будет интересно увидеть, как же осуществляется взаимодействие с настоящим чудом инженерной мысли.

Для подключения к мейнфрейму с компьютера под управлением ОС семейства Microsoft Windows можно использовать утилиту IBM Personal Communications, эмулирующую терминал 3270. Работа с операционной системой z/OS производится в полноэкранном многофункциональном режиме, сильно отличающемся от dumb terminals с унылой черной командной строкой.

Для начала сеанса взаимодействия с z/OS нас попросят ввести имя приложения, с которым мы будем работать. Это может быть, например, Customer Information Control System (CICS) или Time Sharing Option (TSO). Я покажу как выполнять базовые операции в TSO.


Наиболее трудной для освоения особенностью терминала является восприятие факта, что клавише Enter соответствует правый Ctrl.

пятница, 13 февраля 2015 г.

Производительный отказоустойчивый географически разнесенный кластер на базе мейнфрейма? Yes, rly!

Вторую половину октября и весь ноябрь Суровый провел в солнечной Франции неподалеку от Лазурного берега, в клиентском центре IBM, расположенном в замечательном городке Монпелье. Ну знаете, как это бывает: глухие стены, сенсорные панели, мейнфрейм за стеклом, французские коллеги, вкалывание с 9 и до 22-х, но самое главное - очень и очень интересная задача.


Занимались мы с коллегами тестированием реального банковского приложения - платежной системы - на нашей уникальной платформе IBM zEnterprise EC12. В качестве программного обеспечения промежуточного слоя использовалось стандартное ПО IBM: СУБД DB2 z/OS, менеджеры очередей WebSphere MQ, сервер приложений WebSphere Application Server for z/OS (еще раз было продемонстрировано, что вопреки популярному убеждению мейнфрейм идеально подходит для работы Java-приложений). Платежная система была развернута на кластере Parallel Sysplex, узлы которого работали в режиме Active-Active. Самое главное, что хотелось проверить, - как ведет себя платформа и приложение при изменении расстояния между узлами кластера вплоть до 70 км.

Результатами, касающимися масштабируемости и производительности, хотим поделиться с вами в статье: Производительный отказоустойчивый географически разнесенный кластер, работающий по схеме Active-Active на мейнфрейме IBM zEnterprise EC 12. Автором статьи является ваш покорный слуга. Если будет зафиксирован интерес к теме, то напишу еще о результатах тестирования высокой доступности, обеспечиваемой нашей платформой.

Чтобы немного оживить заметку, фотография Сурового челябинского программиста на Чертовом мосту на фоне гор:


и да, мы тоже любим Linux и Тукса, но работать предпочитаем в z/OS.


Понравилось сообщение - подпишитесь на блог

понедельник, 26 января 2015 г.

Отметился в подкасте Разбор полетов

Коллега Виктор Гамов снова позвал в свой подкаст, на сей раз - Разбор полетов. Говорили про OSGi, основной посыл выпуска: "технология хорошая, но правильно готовить ее могут не только лишь все, мало кто может это делать". Говорил мало, т.к. участников подкаста много и каждому хочется что-то сказать, не всегда возможно вставить слово, чтобы никого не перебить.

Всех, имеющих два с половиной часа свободного времени, приглашаю послушать. Если есть вопросы лично ко мне, то пожалуйста задавайте их в комментариях к данной записи.

З.Ы. На мой личный взгляд самыми лучшими продуктами, построенными на основе данной технологии, являются конечно же Eclipse SDK и WebSphere Liberty Profile.

Понравилось сообщение - подпишитесь на блог

вторник, 20 января 2015 г.

Кластер серверов приложений Oracle WebLogic Server забивает сеть при возникновении проблем

Не все администраторы знают, что по-умолчанию экземпляры сервера приложений Oracle WebLogic Server ведут логи не только в своих каталогах DOMAIN_HOME/server/SERVER/logs, но и пересылают их по сети на сервер администрирования домена. Это сделано для облегчения работы людей: если у вас домен из нескольких десятков экземпляров сервера приложений, то очевидно, что иметь все логи доступными в одном месте очень удобно. Но за данное удобство приходится платить.

В случае возникновения проблем с развернутыми приложениями логи начинают забиваться диагностическими сообщениями и трейсами исключительных ситуаций. Проблема в том, что такие трейсы могут быть весьма объемными и все эти данные не только пишутся в файлы на диск, но и начинают пересылаться по сети на сервер администрирования домена, вызывая настоящий шторм. Сервер администрирования может не справиться с наплывом логов и перестать отвечать на запросы.

На небольших доменах (4 - 8 экземпляров) я отключал/отключаю пересылку логов на сервер администрирования. В консоли администратора необходимо в настройках каждого управляемого сервера выставить свойство Domain log broadcaster:, Severity level на странице Environment -> Servers -> SERVER -> Logging -> General, Advanced в значение Critical или даже более жесткое.


На больших доменах данный способ слишком радикален, если совсем отключить распространение логов, то администратору придется их отслеживать из множества источников. Решением может быть уменьшение числа диагностических сообщений, публикуемых в коде приложения, до необходимого минимума или включение фильтрации распространяемых логов.

Для включения фильтрации необходимо создать один или несколько фильтров логов. Фильтры создаются для всего домена на странице DOMAIN -> Configuration -> Log Filters.


При создании нового фильтра достаточно задать его имя.


Если затем перейти в новый созданный фильтр, то с помощью кнопок на панели Expression можно сформировать условие фильтрации.


После редактирования условия нужно не забыть нажать кнопку Save. Отредактированный фильтр вместе с условием станет доступен на таблице Log Filters.


Теперь его можно назначить для свойства Domain log broadcaster:, Filter на странице Environment -> Servers -> SERVER -> Logging -> General, Advanced.


После проведения данных манипуляций шторм логов должен если не совсем сойти на нет, то значительно ослабиться, после чего можно будет приступить к решению вызвавших его проблем в работе приложения.

Понравилось сообщение - подпишитесь на блог

четверг, 15 января 2015 г.

Механизм ограничений на импорты в Eclipse (Access restriction)

Возможно каждый использующий интегрированную среду разработки Eclipse SDK программист сталкивался с подобной ошибкой: Access restriction: The type JLabel is not accessible due to restriction on required library ..\lib\rt.jar


Механизм ограничений на импортируемые классы появился в Eclipse 3.1 и предназначен в первую очередь для разработчиков плагинов, чтобы бить по рукам за доступ ко внутренним API бандлов. Выглядят данные ограничения следующим образом: в (Project) Properties -> Java Build Path -> Libraries -> JRE определены Access Rules для всей JRE или для каждого jar'а внутри данной JRE. По-умолчанию проект создается в среде исполнения (Execution Environment) JavaSE-1.7, которая накладывает ограничения на rt.jar - запрещены все пакеты javax.* кроме 160+ базовых.


Проблема с классами из Swing может возникнуть, если в результате экспериментов разработчик выставит в качестве Execution Environment или JRE-1.1, или вообще какие-то CDC/OSGi-Minimum. При работе с классами Eclipse проблема может возникнуть при попытке использования неразрешенных классов.

Можно отказаться от использования Execution Environment и при создании проекта выбирать опции JRE - Use a project specific JRE или Use default JRE. Все советы вида "удалите из проекта System Library, а потом руками добавьте ее" основаны именно на этом - замените Execution Environment на просто JDK.

При необходимости можно изменить поведение Eclipse, для этого есть два пути:

Windows -> Preferences -> Java -> Compiler -> Errors/Warnings

(Project) Properties -> Java Compiler -> Errors/Warnings


Нужно поменять значение у опции Forbidden References на Warning (по-умолчанию - Error), но делать это нужно в самом крайнем случае.

Для получения более подробной информации можно посмотреть данный пост или этот вопрос на Stack Overflow.

Понравилось сообщение - подпишитесь на блог

среда, 14 января 2015 г.

Новый мейнфрейм от IBM - z13

Корпорация - работодатель анонсирует новую модель мейнфрейма. Пересказывать весь пресс-релиз не имеет смысла, отмечу лишь наиболее интересное.


  • z13 является первой в мире системой, способной обрабатывать до 2.5 миллиардов "надежных, защищенных, прослеживаемых от начала до конца" транзакций в день (примерно 29 тыс. в секунду). Каждую транзакцию можно пропустить через механизм аналитики реального времени, что особенно важно в таких областях, как защита от мошенничества в финансовой и других сферах.

  • z13 имеет в три раза больше оперативной памяти на борту (до 10 ТБ), до 141 процессорного ядра, каждое из которых настраивается как CP, zIIP, ICF, IFL или SAP. Ядра, настроенные как zIIP или IFL, обеспечивают поддержку SMT (до двух потоков на ядро), которую можно включать и отключать на лету. В новые процессоры добавлена поддержка векторных операций (SIMD). В два раза увеличено количество каналов ввода-вывода.

  • Огромное количество ОЗУ на борту машины является драйвером построения на мейнфрейме in-Memory баз данных. В частности для обработки неструктурированных данных улучшена поддержка Hadoop.

  • Новая версия операционной системы z/OS 2.2.

  • Полная поддержка Linux и OpenStack.

  • Много усилий приложено для интеграции мейнфрейма и мира мобильных приложений.

Перечисленные выше особенности делают мейнфрейм привлекательной основой для частного облака. Новая система поддерживает до 8 000 виртуальных серверов, более чем 50 виртуальных серверов на ядро, тем самым позволяя владельцам существенно уменьшить затраты на программное обеспечение, энергию, помещение и персонал.

Так же нельзя не отметить, что в первом квартале текущего года ожидается выход Java 8, в которой будет обеспечена поддержка новых инструкций процессора для векторных операций (в частности при обработке XML), массовый параллелизм с задействованием SMT, а так же использование новых аппаратных возможностей для криптографии и сжатия данных. Ожидается рост производительности Java-приложений на 50% по сравнению с Java 7 на zEC 12. Думаю, что это еще одна причина обратить внимание на мейнфрейм, как на платформу для работы ваших Java-приложений.

Заинтересовавшимся системой читателям предлагаю посмотреть интересный трейлер:


Само видео доступно по ссылке. Подробное описание новой модели.

Понравилось сообщение - подпишитесь на блог