Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Blog Technique de Romelard Fabrice

Les dernières Actualités de Romelard Fabrice (Alias fabrice69 ou F___) principalement autour des technologies Microsoft

Actualités

  • Toutes les actualités et informations sur les technologies Microsoft principalement autour de .NET et SQL Server

Archives

SharePoint 2007 : Quelques optimisations possibles au niveau de SQL Server pour MOSS Search 2007

Dans le cadre de la conception et de la gestion d’une ferme Intranet SharePoint, on peut être tenté de tout mettre dans la même ferme ce qui simplifiera l’usage des utilisateurs avec les services suivant :

  • Portail Intranet corporate
  • Team Sites (sites de projet par exemple)
  • MySites et profiling
  • Recherche globale

Ceci ne posera aucun problème dans le cas de petites fermes, mais si celle-ci commence à être conséquente avec plusieurs milliers de comptes utilisateurs ou des millions de documents indexés, on peut observer des lenteurs pénalisant le rendu des utilisateurs.

C’est donc dans ce contexte, que j’ai du faire appel au support de Microsoft, particulièrement pour la problématique des temps infinis d’indexation par le Crawler. Ainsi, après un gros travail de recherche effectué en compagnie de Yvan Duhamel, nous avons pu trouver des pistes d’amélioration que je peux donc expliquer ici.

La première chose est de réaliser que la (ou les) machine(s) SQL Server de la ferme MOSS que vous montez sera partagée pour tous les services précités. Ainsi le moteur SQL Server va travailler aussi bien pour la gestion et le stockage des données des MySites et Team Sites, que de la gestion du contenu du site corporate (souvent basé sur un site de publishing) et surtout pour le moteur de recherche.

Le fait est que sur des environnements conséquent, le moteur de recherche devient un très gros consommateur de ressources SQL Server :

  • Indexation du contenu (donc lecture et surtout écriture dans la base)
  • Interrogation (donc surtout lecture et un peu d’écriture pour les stats)
  • Propagation si vous avez plusieurs Query (donc surtout lecture et un peu d’écriture pour la gestion des synch)

Ainsi toutes ces activités, mais surtout l’indexation vont faire travailler SQL Server en écriture dans la base de données de recherche. Cela veut donc dire que ces taches vont aussi impacter les lectures-écritures sur les disques de votre serveur SQL Server.

On peut voir cela par les compteurs de performances suivant (Objet PhysicalDisk) à placer sur chaque partition :

  • Avg Disk Queue Lenght (doit rester en dessous de 1)
  • Avg Disk sec/Read (le plus bas possible, attention c’est en seconde et non milli-seconde)
  • Avg Disk sec/Write (le plus bas possible, attention c’est en seconde et non milli-seconde)

image

C’est donc la que les optimisations sont possibles, car ces lectures-écritures vont aussi ralentir le fonctionnement des autres services de votre ferme MOSS, puisque le serveur SQL va devoir utiliser la file d’attente d’écriture sur disque.

Il faut donc repenser la base de données du moteur de recherche comme une base de données temporaire. En effet, si le moindre soucis survient sur votre ferme MOSS et que la base de données est désynchronisée des fichiers d’index (CI files), il faudra recréer tout le système de zéro.

De ce fait, on peut optimiser cette base comme on le ferait pour la base de données temporaire système de SQL Server (TempDB), dont voici la liste :

  • Création d’une ligne SCSI dédiée en RAID1
  • Déplacement de la base de données du moteur de recherche sur cette ligne (LOG et DATA)
  • Création de fichiers de données (MDF) et de log (LDF) avec le même nombre que le nombre de coeurs vu par SQL Server
  • Passage de la journalisation en mode simple
  • Fixation de la taille des fichiers avec un gros volume afin d’éviter les étapes de réallocation d’espace par SQL Server
  • Ajout des fichiers MDF, NDF et LDF dans les exceptions de votre antivirus pour ne pas que celui-ci cherche à accéder sur les fichiers SQL Server
  • Défragmentation des partitions une fois ce déplacement de fichiers effectué

Cela a donc été fait dans ma ferme et la configuration des fichiers SQL est la suivante (8 Coeurs visibles sur mon serveur SQL) :

image

Ceci a permis de stabiliser l’environnement SQL Server qui est revenu dans un état plus normal.

Il nous reste encore du travail sur l’environnement MOSS, mais je vous conseille de faire ce contrôle rapide des compteurs de performance listés plus haut, car cela ne se voit nulle part ailleurs (le processeur était toujours à moins de 5 % d’activité sur cette machine).

Romelard Fabrice [MVP]

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 30 décembre 2009 12:10 par ROMELARD Fabrice

Commentaires

christian a dit :

Pour :

•Avg Disk sec/Read (le plus bas possible, attention c’est en milli-seconde)

•Avg Disk sec/Write (le plus bas possible, attention c’est en milli-seconde)

Tu veux dire seconde au lieu de milli-seconde, quand le compteur indique 0,05 c'est de 50 ms qu'il s'agit.

# décembre 30, 2009 14:11

ROMELARD Fabrice a dit :

Corrigé :)

La fatigue me guète, j'ai mélangé les deux :)

Merci Christian

# décembre 30, 2009 14:17

ROMELARD Fabrice a dit :

# décembre 30, 2009 15:30

christian a dit :

Sinon autre commentaire, ce que tu dis s'applique en général à tout serveur SQL. Ca permet d'écarter d'office un certains nombre de problèmes sur son/ses instance(s).

# décembre 30, 2009 16:05

ROMELARD Fabrice a dit :

Vrai pour le contrôle des compteurs, mais l'externalisation de la base de Search est spécifique MOSS :)

# décembre 30, 2009 16:09

christian a dit :

Oui, oui :op

# décembre 30, 2009 17:03

Christophe LAPORTE a dit :

Personnellement, je n'aurais pas mis 8 fichiers LDF, ni sur la tempDB ni sur la (les) BD utilisateur.

Le journal de transactions étant séquentiel, les fichiers suivant le premier ne seront utilisés que si celui-ci est plein. Or tu as mis un mode de récupération simple. Tout comme celui de la TempDB.

Autant il est vivement conseillé de créer 1 fichier de donnée par cœur (dans la limite de 8, sur mes serveurs 32 cœurs, je n'ai pas vu d'améliorations significative au-delà de 8) autant je ne pense pas que cela soit utile pour les LDF.

Pour poursuivre les améliorations, je jouerais volontiers avec les groupes de fichiers. De plus un formatage des disques de données avec des blocks à 64Kb (au lieu des 4096o par défaut) augmentera la bande passante ...

# décembre 30, 2009 18:35

christian a dit :

@Christophe : D'accord sur les LDF leur multiplication est tout bonnement inutile sur tempdb et les bases de données utilisateurs, SQL Server n'en utilisera qu'un seul à la fois.

Pour les groupes de fichiers, je suis d'accord, mais comme dit dans un billets de TheMit, est que quelqu'un à déjà jouer avec les FG des bases Sharepoint sans de faire remballer par le support technique (juste pour savoir si c'est supporté par MS)

Enfin pour le formatage je serais interessé de connaitre les gains obtenus et si çà concerne un SAN ou des disques locaux ?

# décembre 31, 2009 10:04
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [SharePoint] Les sessions TechDays 2012… par Le blog de Patrick [MVP SharePoint] le il y a 6 heures et 59 minutes

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le 02-09-2012, 11:01

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le 02-09-2012, 08:28

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59