logo aosis

Comment gérer les Out of Memory sur SAP HANA

SAP HANA est une base de données en mémoire, la quantité de mémoire y est limitée. Lorsque la consommation de mémoire en base de données dépasse un certain seuil, SAP HANA arrête le processus et génère alors une erreur Out Of Memory (OOM).

1. COMMENT SONT GERES LES SEUILS DE MEMOIRE
Le processus exécutant une commande SQL ne pourra pas s’allouer plus de mémoire que celle proposée par le paramètre statement_memory_limit
La règle est que ce paramètre ne dépasse pas 30% de la Global Allocation Limit (Zone de mémoire globale).

On peut aussi affiner la gestion de la mémoire avec les « Workload Class ».

On peut ainsi limiter la mémoire par utilisateur / technologies (HANA studio / SAP ABAP / INA / etc..).

Si le processus SQL dépasse le seuil fixé alors une dump de type OOM composite sera généré.

2. COMMENT PEUT-ON LES IDENTIFIER

2.1 ON PEUT LES IDENTIFIER DANS LES TRACES DES FICHIERS LOG DE HANA

Attention HANA ne génère qu’un seul fichier log par tranche de 24H00. Si vous voulez que HANA enregistre les fichiers log de façon plus fréquente, il faut modifier ce paramètre :

 

2.2 ON PEUT LES IDENTIFIER VIA DES SCRIPTS SQL

SAP livre une collection des scripts SQL très intéressante. Il on peut les récupérer dans cette note OSS: 1969700 – SQL Statement Collection for SAP HANA

Le script suivant permet de lister les derniers dumps OOM.

On y retrouvera les informations suivantes

 

3. LES DIFFERENTS TYPES D’OOM GENERES
• Out of memory cleanup dump

<service>_<host>.<port>.rtedump.<timestamp>.after_oom_cleanup.trc

Dump automatique qui documente l’état de la mémoire après une situation de OOM. Peut être utile pour identifier les fuites de mémoire (c’est-à-dire les zones de mémoire qui ne peuvent pas être purgées avec succès)

• Statement memory limit dump

<service>_<host>.<port>.rtedump.<timestamp>.compositelimit_oom.trc

Dump automatique dans le cas où le statement SQL dépasse la limite fixée par le paramètre statement_memory_limit

• Out of memory dump

<service>_<host>.<port>.rtedump.<timestamp>.oom.trc

Dump automatique en cas de situation de OOM.

• Out of memory dump caused by OS limitation

<service>_<host>.<port>.rtedump.<timestamp>.oom_memory_release.trc

Dump automatique en cas de situation de manque de mémoire reportée par le système d’exploitation.

 

4. COMMENT SURVEILLER LES OUT OF MEMORY

On peut surveiller et être alerté lors de la génération des OOM par Solution Manager. Par contre le détail renvoyé par l’outil reste assez faible.

On peut aussi utiliser HANA cockpit, on trouvera un contenu technique plus détaillé avec la commande SQL ainsi que le statement hash (identifiant technique)

On peut même aller plus loin et réfléchir à une petite application qui listerait tous les détails nécessaires pour l’analyse des dumps OOM. On peut donc construire une calculation view HANA qui s’appuie sur les tables techniques suivantes.

Ceci permet d’afficher toutes les informations importantes pour bien identifier :
L’utilisateur HANA
L’utilisateur ABAP
La requête SQL
Le seuil de mémoire limite
La date et l’heure du dump

On peut ensuite envoyer automatiquement ce résultat par mail ceci afin de corriger les requêtes SQL ou d’adapter les seuils limites si besoin.

Article écrit par Marc- Basis Expert

Vous souhaitez plus d’informations ? Un accompagnement sur un sujet Dataviz ? N’hésitez pas à contacter notre Centre d’Expertise Dataviz : coe_sap_lead@aosis.net

Pour suivre nos aventures sur LinkedIn :