IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Mémoire système insuffisante - SQL Server 2019


Sujet :

Administration SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Mémoire système insuffisante - SQL Server 2019
    Bonsoir à tous

    J'ai un serveur de base de données qui tourne sous MS SQL SERVER 2019 ENTERPRISE EDITION, avec une base qui contient une table In-Memory.

    Quand j'essaie de charger des données (avec SSIS 2019), j'ai le message d'erreur ci-dessous dès que la table atteint 30GB

    Erreur*: 0xC0202009 à load OCS voice, WK_OCS [721]: Code d'erreur SSIS DTS_E_OLEDBERROR. Une erreur OLE DB s'est produite. Code d'erreur*: 0x80004005.
    Un enregistrement OLE DB est disponible. Source*: «*Microsoft SQL Server Native Client 11.0*» Hresult*: 0x80004005 Description*: «*L'instruction a été arrêtée.*».
    Un enregistrement OLE DB est disponible. Source*: «*Microsoft SQL Server Native Client 11.0*» Hresult*: 0x80004005 Description*: «*La mémoire système est insuffisante dans le pool de ressources «*default*» pour exécuter cette requête.*».
    Erreur*: 0xC0209029 à load OCS voice, WK_OCS [721]: Code d'erreur SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Échec de l'objet «*WK_OCS.Entrées[Entrée de destination OLE DB]*» en raison du code d'erreur*0xC020907B. En outre, la disposition de la ligne d'erreur sur*«*WK_OCS.Entrées[Entrée de destination OLE DB]*» spécifie un échec sur l'erreur. Une erreur s'est produite sur l'objet spécifié du composant spécifié. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.
    Erreur*: 0xC0047022 à load OCS voice, SSIS.Pipeline: Code d'erreur SSIS DTS_E_PROCESSINPUTFAILED. La méthode ProcessInput du composant «*WK_OCS*» (721) a échoué avec le code d'erreur 0xC0209029 pendant le traitement de l'entrée «*Entrée de destination OLE DB*» (734). Le composant identifié a retourné une erreur de la méthode ProcessInput. Cette erreur, spécifique au composant, est irrécupérable et provoquera l'arrêt de la tâche de flux de données. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.
    Erreur*: 0xC02020C4 à load OCS voice, OCS VOICE TOLOAD [100]: Échec de la tentative d'ajout d'une ligne au tampon de tâche de flux de données*: code d'erreur*0xC0047020.
    Erreur*: 0xC0047038 à load OCS voice, SSIS.Pipeline: Code d'erreur SSIS DTS_E_PRIMEOUTPUTFAILED. La méthode PrimeOutput sur OCS VOICE TOLOAD a retourné le code d'erreur 0xC02020C4. Le composant a retourné un code d'erreur lorsque le moteur du pipeline a appelé PrimeOutput(). La signification du code d'erreur est définie par le composant. Cependant, l'erreur est irrécupérable et le pipeline ne s'exécute plus. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.




    SQL Server est configuré avec max server memory à 51 200 (soit 50Gb). Si ce que j'ai lu est correcte, avec cette configuration, SQL Server réserve 85% pour les objets en mémoire (soit environ 42 GB).

    Je n'ai que les pools de ressource par défaut (default et internal).

    Merci d'avance

    PS: vu qu'il n' y avait pas le préfix 2019, j'ai prix 2017

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 897
    Points : 53 133
    Points
    53 133
    Billets dans le blog
    6
    Par défaut
    Avec le IN memory il faut beaucoup de RAM. 50 go de RAM sur la machine avec un table in memory de 30 Go c'est suicidaire. Je mettrais au minimum 128 Go.
    De plus si vous êtes en VM il faut impérativement fixer la mémoire et ne pas avoir de baloonning.

    A +

  3. #3
    Membre à l'essai
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Bonsoir

    Merci pour la réponse.

    Je suis juste en train de tester. Sinon, la machine de PROD a 256Go de RAM, et là la table ne vas pas faire 32Go, parce que les données seront chargées en continue.

    Mon problème est que quand j'ai le message d'erreur, il y'a encore de la RAM disponible. C'est comme si y'a une config qui limite la RAM allouée aux objets en mémoire.

    Par ailleurs, pourriez-vous m'éclairer sur le baloonning? C'est le fait que les pages soient swappées sur disques? Je suis pas sûr de comprendre.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    info complémentaire:

    Lorsque j'interroge sys.dm_os_process_memory, j'ai 33208448 come physical_memory_in_use_kb, alors que j'ai configuré memory max à 50Go

  5. #5
    Membre à l'essai
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Bonsoir

    J'ai mis max server memory à 60Go et c'est passé.

    Donc quelqu'un aurait un lien vers un document qui décrit la gestion mémoire sous SQL Server 2019, ou on pourrait voir comment SQL Server répartie la RAM entre les objets en mémoire et le BUFFER POOL?

    Si besoin si y'a moyen de fixer les espaces mémoires allouées aux objets en mémoire.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 897
    Points : 53 133
    Points
    53 133
    Billets dans le blog
    6
    Par défaut
    La gestion du cache pour les données ordinaires (tables persistantes et plans d’exécution) est basée sur un algorithme LRU avancé. Les différentes strates de mémoire (il y en a plus de 100) ont un pourcentage de la RAM maximale fixée dans sp_configure, de manière dynamique.

    Si vous voulez voir la répartition de ces différentes strates, lancez la commande :
    Bon courage !

    Pour ce qui est des tables "In Memory", la taille allouée est dynamiquement strictement celle consommée par les tables in memory.

    Il n'y a aucun moyen (et heureusement) de fixer ces parties de la mémoire.

    Encore une fois 60 Go sur un serveur à 256 Go, ça n'a pas de sens. SQL Server a besoin d'un maximum de mémoire et doit être mis sur un serveur dédié. J’attribuerai donc 250 Go à SQL Server.

    Dans un VM la mémoire allouée peut être fixe (nécessaire pour les SGBD) ou variable en fonction de la demande des autres VM. Dans ce dernier cas on parle de balooning, car la mémoire se gonfle et se dégonfle au fur e à mesure des besoins.
    Il y a beaucoup d'autres réglages en ce qui concerne SQL Server sur VM Ware et si c'est une grosse installation et en particulier avec des tables "In Memory" je vous conseille de passer en machine physique...
    A lire : https://www.vmware.com/content/dam/d...ices-guide.pdf

    A +

  7. #7
    Membre à l'essai
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2017
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Bonsoir

    Merci beaucoup pour vos réponse.

    Pour les caractéristiques, je suis actuellement sur une machine test (qui a 60Go). En prod, je vais utiliser celle de 256Gb.

    J'ai volontairement utilisé une machine moins puissante pour voir comment ça se comporte.

    Quand j'exécute dbcc memorystatus, j'ai 184 Gb comme VM Reserved dans l'onglet Memory Manager. Sur un autre serveur en PROD, cette valeur correspond à la RAM physique installée.

    Du coup, qu'es ce qui peut faire que cette valeur soit si nettement supérieure à la RAM installée? Il n y a que SQL Serveur installé sur le serveur (avec les options poybase, scaleout, ...).

    Je vais lire la doc que vous avez fournit qui semble très interessante.

    Merci

Discussions similaires

  1. [2012] Consommation de mémoire insuffisante SQL Server
    Par i.chafai dans le forum Administration
    Réponses: 7
    Dernier message: 28/12/2018, 17h46
  2. [2008R2] Mémoire système insuffisante
    Par KyoshiroKensei dans le forum Administration
    Réponses: 42
    Dernier message: 01/05/2014, 22h44
  3. Connaître besoins mémoire du moteur SQL Server
    Par Blacknounou dans le forum Administration
    Réponses: 2
    Dernier message: 19/02/2014, 15h02
  4. Réponses: 9
    Dernier message: 14/05/2012, 10h33
  5. Trop de mémoire utilisée par SQL Server
    Par sylvie75 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/08/2006, 12h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo