Comment résoudre les problèmes d'utilisation élevée du processeur sur ma base de données Amazon RDS for Oracle ?

Lecture de 10 minute(s)
0

Je constate une utilisation élevée du processeur sur mon instance de base de données Amazon Relational Database Service (Amazon RDS) for Oracle.

Brève description

Si votre base de données RDS pour Oracle utilise beaucoup le processeur, utilisez une combinaison des outils suivants pour en identifier la cause :

  • Métriques Amazon CloudWatch
  • Métriques de surveillance améliorées
  • Métriques de Performance Insights
  • Oracle Statspack
  • Référentiel automatique de charge de travail (AWR)
  • Moniteur de diagnostic automatique de base de données (ADDM)
  • Historique des sessions actives (ASH)
  • Oracle SQLT

Résolution

Lorsque vous diagnostiquez des problèmes liés à une utilisation élevée du processeur, identifiez la période au cours de laquelle le problème s'est produit.

Métriques CloudWatch

Amazon RDS envoie des métriques à CloudWatch toutes les minutes pour chaque base de données active. Consultez les métriques CloudWatch pour Amazon RDS suivantes afin d'identifier les modèles de processeur sur de longues périodes :

  • Utilisation du processeur
  • CPUCreditUsage, si vous utilisez une instance T2 ou T3
  • CPUCreditBalance, si vous utilisez une instance T2 ou T3

Passez également en revue les mesures suivantes pour vérifier s'il y a eu une modification de la charge de travail et si des seuils ont été dépassés. Ces facteurs peuvent contribuer à l'augmentation de l'utilisation du processeur.

  • Connexions aux bases de données
  • Profondeur de la file d'attente du disque
  • Mémoire libérable
  • Lire les IOPS
  • Lire la latence
  • Écrire des IOPS
  • Écrire la latence

Pour plus d'informations, consultez les sections Surveillance des métriques Amazon RDS avec Amazon CloudWatch et Affichage du statut et des recommandations des instances.

Métriques de surveillance améliorées

La surveillance améliorée fournit des mesures en temps réel pour le système d'exploitation sur lequel s'exécute votre instance de base de données. Alors que CloudWatch obtient les mesures d'utilisation du processeur à partir de l'hyperviseur, Enhanced Monitoring obtient ces mesures à partir d'un agent de l'instance de base de données. Les métriques de surveillance améliorée sont plus précises que les métriques CloudWatch. Les métriques de surveillance améliorées sont stockées pendant 30 jours dans les journaux CloudWatch.

Vous pouvez définir l'intervalle de collecte des métriques entre 1 seconde et 1 minute. Il est recommandé de définir la granularité sur 1 seconde ou 5 secondes pour les applications critiques pour l'entreprise. Grâce à cette granularité, les métriques fournissent des informations plus précises sur la charge de l'application pour analyser les problèmes de performances.

Pour visualiser la période pendant laquelle le pic d'utilisation du processeur s'est produit, procédez comme suit :

  1. Ouvrez la console Amazon RDS.
  2. Dans le volet de navigation, choisissez Bases de données.
  3. Choisissez la base de données que vous souhaitez surveiller.
  4. Choisissez l'onglet Surveillance.
  5. Sélectionnez Surveillance améliorée dans la liste déroulante Surveillance.
  6. Dans la vue Surveillance améliorée, si l'instance est un déploiement multi-AZ, sélectionnez principal pour afficher les métriques du système d'exploitation de l'instance principale. Sélectionnez secondaire pour afficher les mesures de la réplique de secours.
  7. Sélectionnez la date et l'heure de début.
  8. Dans le coin droit, sélectionnez la durée. Vous pouvez sélectionner 5 minutes, 15 minutes, 30 minutes ou 1 heure.

Le graphique du total du processeurindique la période pendant laquelle l'utilisation du processeur a augmenté.

Les graphiques Load Avg 1 min, Load Avg 5 min et Load Avg 15 min indiquent le nombre de processus demandant du temps CPU au cours de la dernière minute, des cinq dernières minutes et des 15 dernières minutes, respectivement. Si la moyenne de charge est supérieure au nombre de vCPU, il se peut que l'instance soit confrontée à un goulot d'étranglement du processeur.

Pour afficher les processus du système d'exploitation, sélectionnez la liste des processus du système d'exploitation dans la liste déroulante Surveillance. Triez ensuite la liste par valeurs de % de CPU pour identifier le processus qui utilise le plus le processeur.

**Exemple : **

NOMVIRTRES%CPU%MEMVMLIMIT
OracleOrCL [27074]ᵗ6,07 Gio1,007.24 Mo44,7212,78illimité
OracleOrCL [27076]ᵗ6,07 Gio1,010.02 Mo44,6412,82illimité

Pour plus d'informations sur les colonnes de l'exemple précédent, consultez la section Affichage des métriques du système d'exploitation dans la console RDS.

Après avoir identifié le processus qui utilise le plus le processeur, vous pouvez exécuter la requête suivante pour mapper l'ID du processus à une session de la base de données :

SET LINESIZE 120;
SET PAGES 200;
COL OSUSER FOR a20;
COL USERNAME FOR a20;
COL MACHINE FOR a20;
SELECT a.sid, a.serial#, a.osuser, a.username, a.machine, a.sql_id, c.sql_text FROM v$session a, v$process b, v$sql c
WHERE a.paddr=b.addr AND b.spid=&spid AND a.sql_id=c.sql_id(+);

Par défaut, tous les graphiques de surveillance améliorée ne sont pas affichés sur le tableau de bord de surveillance améliorée. Pour obtenir une vue de la charge de travail au moment du pic d'utilisation du processeur, activez des graphiques supplémentaires en procédant comme suit :

  1. Ouvrez la console Amazon RDS.
  2. Dans le volet de navigation, choisissez Bases de données.
  3. Choisissez la base de données que vous souhaitez surveiller.
  4. Choisissez l'onglet Surveillance.
  5. Sélectionnez Surveillance améliorée dans la liste déroulante Surveillance.
  6. Dans la vue Surveillance améliorée, choisissez Gérer les graphiques.
  7. Sélectionnez les graphiques que vous souhaitez afficher.
  8. Choisissez Enregistrer.

Exemples de graphiques que vous pouvez choisir d'afficher :

Mémoire

  • Gratuit
  • En cache
  • Bufferisé
  • Total
  • Sale
  • Actif
  • Dalle

**Remarque :**Les métriques associées aux métriques sont extraites du fichier /proc/meminfo .

Échange

  • Échange
  • Gratuit

E/S sur disque et E/S sur périphérique physique

  • Lire les E/S
  • Écrire les E/S
  • Taille de la file d'attente
  • Attendre

PROCESSEUR

  • Utilisateur
  • Total
  • Système
  • Attendre
  • Inactif
  • Bon

Pour la liste des mesures disponibles, voir Présentation de la surveillance améliorée.

Pour plus d'informations sur la surveillance améliorée, consultez la section Surveillance des métriques du système d'exploitation avec Enhanced Monitoring.

Pour plus d'informations sur le coût de la surveillance améliorée, voir Coût de la surveillance améliorée.

Métriques de Performance Insights

Le tableau de bord Amazon RDS Performance Insights vous permet de visualiser la charge de la base de données et de la filtrer en fonction des temps d'attente, des instructions SQL, des hôtes ou des utilisateurs.

  1. Ouvrez la console Amazon RDS.
  2. Dans le volet de navigation, choisissez Performance Insights.
  3. Choisissez l'instance de base de données que vous souhaitez surveiller.
  4. Pour Afficher le passé, sélectionnez la durée de votre choix.
  5. Dans le graphique de charge de la base de données, vérifiez l'heure à laquelle vous avez enregistré un pic d'utilisation du processeur.
  6. Choisissez l'onglet Top waits.
    Notez les principaux événements d'attente survenus au cours de la période de pic.
  7. Choisissez l'onglet Top SQL.
    Passez en revue et optimisez les instructions SQL qui ont contribué au pic.

Pour plus d'informations sur le coût de Performance Insights, consultez la tarification de Performance Insights.

Oracle Statspack

Statspack est un outil de reporting des performances qui fournit les mesures de performance de votre base de données sur une période donnée.

Pour vérifier l'utilisation du processeur de votre instance à l'aide de Statspack, procédez comme suit :

  1. Générez un rapport statspack pour la période au cours de laquelle vous avez rencontré un problème.
  2. Passez en revue et optimisez les requêtes qui entraînent une charge élevée du processeur.
  3. Passez en revue les principaux événements d'attente.

**Exemple d'extrait d'un rapport Statspack : **

-> Total DB CPU (s):           3,345
-> Captured SQL accounts for   91.3% of Total DB CPU
-> SQL reported below exceeded  1.0% of Total DB CPU
    CPU                  CPU per            Elapsed                     Old
  Time (s)   Executions  Exec (s)  %Total   Time (s)    Buffer Gets  Hash Value
---------- ------------ ---------- ------ ---------- --------------- ----------
   3043.36      598,100       0.01   91.0    3356.81     994,096,212  219593194

Module: JDBC Thin Client
SELECT tt.ORDER_TOTAL, tt.SALES_REP_ID, tt.ORDER_DATE, customers.CUST_FIRST_NAME, customers.CUST_LAST_NAME FROM   
(SELECT orders.ORDER_TOTAL, orders.SALES_REP_ID, orders.ORDER_DATE, orders.customer_id, rank() Over (ORDER BY orders.O

Pour plus d'informations, consultez la documentation Oracle pour Oracle Statspack.

AWR

AWR (sur le site Web d'Oracle) est un outil de reporting des performances d'Oracle qui fournit des mesures de performance sur une période donnée.

**Remarque :**AWR nécessite une licence Diagnostic Pack et n'est disponible que pour l'édition Enterprise d'Oracle.

Pour identifier la cause de la charge de votre processeur à l'aide de l'AWR, procédez comme suit :

1.    Exécutez une requête similaire à la suivante pour identifier l'ID du snapshot de début et de fin pendant la période de forte charge du processeur :

SELECT SNAP_ID, BEGIN_INTERVAL_TIME FROM DBA_HIST_SNAPSHOT ORDER BY 1;

2.    Générez le rapport AWR.

3.    Téléchargez le rapport AWR.

4.    Passez en revue et optimisez les requêtes répertoriées dans la section SQL ordonnée par CPU Time du rapport AWR.

5.    Passez en revue les principaux événements d'attente.

Dans Oracle 12c et versions ultérieures, les rapports ADDM et ASH sont inclus dans le rapport AWR.

Remarque : Lorsqu'un rapport AWR est généré pour plus de quatre ID de snapshot consécutifs, tous les rapports ADDM et ASH ne sont pas inclus. Pour générer ces rapports supplémentaires, suivez les instructions des sections suivantes.

ADDM

L'ADDM est un outil de diagnostic qui analyse les données AWR, identifie les problèmes de performance et fournit des recommandations.

**Remarque :**ADDM nécessite une licence Diagnostic Pack et n'est disponible que pour l'édition Enterprise d'Oracle.

1.    Exécutez une requête similaire à la suivante pour identifier l'ID du snapshot de début et de fin pendant la période de forte charge du processeur :

SELECT SNAP_ID, BEGIN_INTERVAL_TIME FROM DBA_HIST_SNAPSHOT ORDER BY 1;

2.    Générez le rapport ADDM.

3.    Téléchargez le rapport ADDM.

4.    Passez en revue les recommandations du rapport ADDM.

ASH

ASH (sur le site Web d'Oracle) est un outil de diagnostic qui collecte des informations sur les sessions actives. Pour résoudre les problèmes de performances transitoires à l'aide d'ASH, procédez comme suit :

**Remarque :**ASH nécessite une licence Diagnostic Pack et n'est disponible que pour l'édition Enterprise d'Oracle.

1.    Générez un rapport ASH pour la période pendant laquelle la charge du processeur était élevée.

2.    Téléchargez le rapport ASH.

3.    Consultez la section TOP SQL avec TOP Events.

Pour plus d'informations sur l'interprétation des rapports AWR, ADDM et ASH, consultez la documentation du support Oracle pour la FAQ Oracle Support Doc ID : Rapports du référentiel automatique de charge de travail (AWR) (numéro de document 1599440.1).

Oracle SQLT

Amazon RDS prend en charge Oracle SQLTXPLAIN (SQLT) grâce à l'utilisation de l'option SQLT. SQLT est un outil utilisé pour diagnostiquer les instructions SQL qui ne fonctionnent pas correctement.

Pour générer un rapport pour une instruction SQL spécifique, voir Oracle SQLT.

Si vous recevez l'erreur suivante lors de l'utilisation de SQLT :

Error: ORA-20106: SQLT parameter connect_identifier must be set when running SQLT from a remote client.

Exécutez l'une des commandes suivantes avant d'exécuter l'extrait :

EXEC sqltxadmin.sqlt$a.set_sess_param(‘connect_identifier’, ‘@SID’);
EXEC sqltxadmin.sqlt$a.set_param(‘connect_identifier’, ‘@example-hostname:example-port/example-sid’);

Informations connexes

Vue d'ensemble des métriques de surveillance dans Amazon RDS

Génération de rapports de performance avec Automatic Workload Repository (AWR)

Génération d'un rapport ADDM

Génération d'un rapport ASH

Comment puis-je vérifier les statistiques de performance d'une instance de base de données Amazon RDS qui exécute Oracle ?