Меню

Ограничение потребления всей доступной памяти SAP HANA процессами SAP BW HANA

|

В статье подробно рассказано, как защитить решение SAP Business Warehouse (SAP BW) на базе SAP HANA с помощью настроек лимитирования для безопасного потребления памяти. Параметры SAP HANA (в основном, неизвестные) предоставляют множество ценных опций для защиты системы от проблем с памятью, создаваемых пользователями или вызываемых различными ошибками. Вы узнаете, как с помощью параметра ограничения памяти установить в системе пороговое значение ее потребления.

Ключевое понятие

Одна из проблем SAP HANA заключается в том, что данные, получаемые при работе с calculation view (далее ракурсы расчёта), могут потребовать значительного объёма памяти системы. В среде SAP HANA даже выполнение запроса (Query) может привести к останову всей системы. Чтобы избежать подобных проблем, SAP рекомендует использовать настроечные параметры SAP HANA. Чтобы повысить надежность системы и обеспечить ее эффективную защиту, следует активировать такие параметры по одному. Применение этих настроечных параметров в системе выполняется просто и не требует перезагрузки системы.

В своих последних статьях я уделял основное внимание ракурсам расчета SAP HANA как средству, позволяющему отказаться от постоянного хранения больших объемов данных в ландшафте SAP Business Warehouse на платформе SAP HANA. Поскольку ракурсы расчета функционируют как хранимые процедуры, вся логика переноса и результаты ракурса рассчитываются на лету (в памяти) без сохранения результата в какой-либо постоянной таблице SAP BW.

В зависимости от спроектированной структуры ракурса, расчёт в оперативной памяти может потребовать очень большого объёма памяти SAP HANA. Представьте, что ракурс расчета считывает объект хранилища данных (DSO), в котором содержится несколько миллионов строк.

Рассмотрим настройку параметров для безопасного потребления памяти. Эта настройка реализуется с помощью параметра SAP HANA и позволяет предотвратить останов всей системы SAP HANA в результате применения плохо спроектированного ракурса расчета с неэффективной структурой в сочетании с новым композитным инфо-провайдером SAP HANA, пришедшим на место мультипровайдера. Малоизвестным побочным эффектом в среде SAP HANA также является потребление большого объема памяти при выполнении запросов виртуальными структурами (поскольку данные не хранятся на каком-либо дополнительном уровне подготовки).

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

В одном из моих проектов SAP HANA у рабочей группы возникла следующая проблема: при определённых условиях на выполнение одного из запросов расходовалась память в объеме до 1 ТБ. Позднее, в сотрудничестве со службой поддержки клиентов SAP, проблема была локализовать внутри SAP HANA и устранена с помощью SAP-нот. Однако и после этого мы не перестаём использовать данный лимит, реализованный с помощью параметра SAP HANA и описываемый в этой статье. Никогда не знаешь, какие проблемы могут возникнуть в будущем.

По умолчанию один процесс SAP HANA может использовать 100 % доступной памяти системы SAP HANA. Это может привести к появлению серьезных проблем, например, к останову процессов обработки данных. Чтобы защитить систему от неконтролируемого потребления памяти запросами, рекомендуется установить лимит потребления памяти на один хост.

Я расскажу, где и как выполняется ведение этих настроек, чтобы вы могли избежать подобных проблем в будущем. Как было сказано выше, в нашем случае первоначальная проблема была вызвана ошибкой в SAP HANA, но я считаю весьма целесообразным ограничить расход памяти для любого процесса объемом от 500 ГБ до 1 ТБ (или более в зависимости от вашей среды SAP HANA). Лучше столкнуться с дампом в SAP BW на базе SAP HANA, чем устранять последствия остановки всей системы.

Стандартные параметры SAP HANA для защиты системы

Начиная SAP HANA Support Package 08, SAP предоставляет параметр statement_memory_limit для ограничения потребления памяти предварительно установленным объемом при обработке запросов.

Запросы или процессы прерываются дампом «Недостаток памяти» (‘compositelimit_oom OR [MEMORY_LIMIT_VIOLATION]’), если при их выполнении будет достигнут лимит, заданный параметром statement_memory_limit.

Подробное пояснение приводится на сайте SAP Help по следующей ссылке Web-адр. 1.

Web-адр. 1. Справка по прерыванию запросв и процессв дампом «Недостаток памяти».

Для изменения параметров требуется пользователь базы данных SAP HANA с присвоенными системными полномочиями INIFILE ADMIN. Также необходимо активировать функцию отслеживания потребления памяти, эту настройку мы рассмотрим на нескольких иллюстрациях ниже. Перезагрузка системы при изменении параметров не требуется, он начинает действовать сразу после установки.

Настройки можно применить с помощью SAP HANA Studio, Eclipse Studio или непосредственно в транзакциях SAP GUI. В SAP HANA или Eclipse Studio дважды щёлкните по выбранной системе (например, по продуктивной) и перейдите на вкладку «Configuration» (Конфигурация), см. Рис. 1.

Рис. 1. Обзор администратор SAP HANA

Для изменения параметров из SAP GUI выполните транзакцию ST04 и перейдите в папку «Configuration» (Конфигурация) и на экран «INI Files» (Файлы INI). Выберите параметр (global.ini) для изменения его подчиненных параметров (рис. 2).

Рис. 2. Изменение параметров в SAP GUI

Параметры настройки по умолчанию

В статье я демонстрирую внесение изменений посредством Eclipse Studio, но и при использовании SAP GUI в изменениях будут указаны те же файлы ini. Экран может выглядеть немного иначе, но после внесения изменений лимит безопасности работает так же, как и при изменении настроек через SAP HANA или Eclipse Studio.

В ракурсе администрирования (рис. 1) выбранной системы SAP BW на базе SAP HANA перейдите на вкладку «Configuration» (Конфигурация). После выбора вкладки система считывает и выводит на экран все доступные файлы ini, в которых хранится конфигурация SAP HANA.

Перейдите к записи global.ini, разверните древовидную структуру и выберите resource_tracking (рис. 3).

Рис. 3. Параметры по умолчанию в global.ini

Как можно заметить, система находится в состоянии по умолчанию. Обратите внимание на то, что параметры enable_tracking и memory_ tracking отключены. Это означает, что выполняемые в SAP HANA процессы (например, запросы) могут потреблять доступную память без ограничений. Для изменения такого поведения сначала необходимо активировать настройки отслеживания, а затем задать настройки памяти (лимит для безопасного потребления памяти).

Оформите подписку sappro и получите полный доступ к материалам SAPPRO

У вас уже есть подписка?

Войти

Обсуждения Количество комментариев1

Комментарий от  

Ксения Сидоренко

  |  26 июня 2018, 11:25

Очень полезная статья, спасибо.
 
Рис. 9. Измененное значение параметра — 250 ГБ на скрине - 500.
Скрипт меняет значение на 500, а по тексту: "Код изменяет значение параметра на требуемое — 250 ГБ."