|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() |
Bonjour,
N'étant pas DBA et peu familiarisé avec SQL Serveur, je vous remercie de votre indulgence. (désolé, mais les bases c'est déjà trop high level pour moi Je vous expose le problème : Alerté par des utilisateurs rencontrant depuis plusieurs jours un ralentissement violent de leur application à partir de 11h et pendant 20 bonne minutes. en regardant les différents système, nous avons constaté (via task manager) un pic CPU à 100% correspondant à cette période et dû au processus sqlservr.exe. Je cherche donc à savoir ce qui peut provoquer ce pic CPU chaque jour. pour décrire le système : serveur bases de données mutualisées VM , Win2008R2, SQL Server 2008 R1 (actuellement à 4vCPU, 6Go de ram, à 2vCPU et 4Go de ram au début du problème, on teste ce qu'on peut) SQL Server 2008 R2. il y a 7 instances sur le serveur, des petites bases assez peu sollicitées auriez vous des idées sur comment trouver ce qui provoque ce pic ? Pour info, j'ai un job de maintenance log qui se déclenche sur toutes les instances, mais comme il a lieu toutes les heures à heure fixe, je ne pense pas que cela vienne de lui... je suis déjà allé voir les view sys.dm_exec_query_stats et sys.dm_exec_requests mais je n'ai rien trouvé qui tombe dans ces horaires. quelqu'un aurait des idées ? peut être aussi sur comment collecter un maximum de données demain lors de la prochaine itération du problème... MErci d'avance |
|
|
00
|
|
|
#2 | ||||||||
|
Membre émérite
![]() David BAFFALEUFInscription : février 2008 Messages : 670 ![]() |
Au tout début du pic faire:
Code :
Code :
A la fin du problème, faire: Code :
Code :
et nous poster tout ça
__________________
David B. |
||||||||
|
00
|
|
|
#3 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 074 ![]() |
Citation:
1) 7 instances sur une même machine en production c'est stupide. Chaque instance se concurrence pour les ressources CPU / RAM et disque et il est possible d'arriver à une quasi famine de ressources d'une instance envers l'autre, sauf si vous avez sciemment paramétré chaque instance pour partager les CPU, la RAM et dans une moindre mesure les disques afin qu'aucune instance ne se marche sur les pieds... 2) la virtualisation de SQL Server pose de multiples problèmes, car avant tout un SGBDR est un OS indépendant de l'OS qui l'héberge.... Dans SQL Server l'OS interne s’appelle SOS (SQL Server OS) mais dans le cas qui vous préoccupe, ce SOS est une bouteille lancée à la mer... Lisez l'article que j'ai écrit à ce sujet : http://blog.developpez.com/sqlpro/p8...virtualisation 3) en 64 bits, le système (Windows) peut devenir naturellement instable, si vous n'avez pas spécifiez à chaque instance de ne pas tout prendre. En effet chaque instance accapare la RAM, même au détriment de l'OS et ce dernier peut être en état de stress et devoir demander à SQL Server de restituer de la RAM... Avec 7 instances, c'est du pur suicide ! Il faut donc restreindre chacune des instances au niveau de la RAM et des autres de façons a ce que l'OS ait en permanence au moins 2 Go de RAM... 4) il faut aussi interdire le ballooning de la VM et même faire du disk pass through autant que possible. De plus sauvegarder une VM ne garantie pas la reprise de SQL Server en cas de restauration sauf à utiliser au moins VSS qui "freeze" les bases le temps du snapshot. 5) utiliser 7 instances pour quelques bases c'est hautement stupide, car chaque instance consomme des ressources non négligeable (RAM, process de tâches de fond, accès disques synchrones pour la journalisation) qu'une seule aurait parfaitement éviter. Il est tout à fait déconseillé d'utiliser plusieurs instances en production.... comme de créer plusieurs bases pour une même application. Bref, votre architecture est un excellent exemple de tout ce qu'il faut faire pour planter un système même en ayant une activité quasi nulle !!! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() David BARBARINInscription : août 2005 Messages : 4 137 ![]() |
Citation:
En plus de ce que donne David, vous pouvez aussi jouer avec les traces côtés serveur et les compteurs de performances (CPU, disque, RAM ...) . Vous pourrez ainsi corréler les pics CPU avec les requêtes de ta base. J'ajouterai à tout cela les compteurs de performance niveau ESX. ++ |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() |
Pour répondre à Frédéric, ton avis est très tranché, j'ai aussi vu des infras où MS et d'autres experts SQL Server avaient recommandé la virtualisation dans des proportions bien plus grande que celles-ci. Personnellement, ce n'est pas trop mon rayon donc je ne porte pas de jugement.
Je ne suis pas encore en mesure de savoir si les quelques précautions que tu cites sont mises en place. Mais si je suis ton raisonnement, il faudrait avoir un serveur physique dédié par application/instance. Pour une DSI avec des moyens limité ce n'est pas forcément évident. Perso, je débarque, donc je vais attendre un peu avant de tout remettre en cause... A l'autre David, oui je sais que la vision task manager d'une VM est toute relative, mais comme je n'ai que ceci, j'essaie d'éliminer les causes progressivement. Par ailleurs, je n'ai pas vraiment relevé de pic/saturation côté hôte... |
|
|
00
|
|
|
#6 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 074 ![]() |
Citation:
Or vous postez pour des problèmes de performances. L'intérêt de la virtualisation réside dans deux axes : 1) faire des économies de licences (MS ne fait payer qu'au CPU ou core physique) 2) mutualiser des ressources pour des petites bases / serveurs, les éditeurs de logiciels ayant tendance à exiger d'avoir une instance propre pour leurs applications alors qu'il est facile de mutualiser plusieurs bases sur un même serveur, à condition que les applications ait été un tant soit peu bien écrites... De toute façon, déjà la quantité de RAM accordé pour 7 instances en sus de l'OS est anormalement trop faible. Dans un tel cas il faudrait au minimum 18 Go de RAM (2 Go par instance + 4 pour l'OS) et fixer la ram à 2 Go pour chaque instance.... A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com