TechDays 2012 : Développer le potentiel de IIS7.5

1-      Introduction

Toute optimisation doit passer par une phase d’étude et d’identification, aucune optimisation ne se fait à priori.

2-      IIS7.5

IIS 7.5 possède 2 modes:

– Classic mode pipeline: les requêtes passent par un module isapi qui est externe à IIS

– Intégré:

Il permet de souscrire à des event Begin,..

Il possède le  module d’authentification qui est natif

Il est possible d’écrire des modules (c++, c#, ..) pour influencer le traitement de la requête tout au long du pipeline.

Le processus exécuté par IIS est w3wp, il contient plusieurs Thread et chacun d’eux ont leur but.

Toutes les requêtes passent par des modules d’où le ralentissement des fichiers statique.

En ASP.Net MVC, il est possible de modifier ce contenu en mettant la clé de config (web.config)  RunAllManagedModule à True

Les avantages:

– Applique tous les modules automatiquement à tous les types de contenus

– moins de configuration unitaire

Les inconvénients:

– Overhead d’activation des modules managés

– Effet de bord du à l’activation de modules non implémentés à cet effet.

3-      Optimisation:

– Sur le répertoire qui contient des contenues static(js, css) créer dans IIS une application qui possède un pool dédie “non managé”., Ainsi ce répertoire ne passera pas par le module asp.net. de plus il est possible d’enlever les modules non désiré dessus.

– Dans le web.config :

  • mettre la balise <debug> à false
  • mettre la balise <trace enabled> à false
  • compiler l’application en mode Release

– configurer un timeout le plus bas possible afin de libérer les ressources le plus rapidement

4-      Identifier les problèmes

Les différents outils qui permettent d’identifier les problèmes (qu’est ce qui pose problème, qu’elle est la page qui pose problème, …)

– IIS 7 : outil de tracing FRED (composant optionnel)

Il s’active par site, et il se configure avec des règles (exemple : tracer toutes les requêtes qui se termine par un code de retour 404)

Son avantages et qu’il ne provoque presque pas de dégradation de perfs(2 à 4%)

– DedugDiag

Gratuit et Développé par Microsoft, permet des surveiller les processus de IIS

– WinDBG

debuging managé

Remarque : Attention les erreurs 404 provoque des problèmes de performances.

5-      Compteur de performances

Dans l’outil compteur de performance : si le CPU est à plus de 80%, il travail en mode survie.

6-      Faire baisser la charge de IIS

1- MVC asynchrone (possible aussi en WebForm mais plus difficile à mettre en place) : pour éviter les appels bloquants:

ce mode permet de :

– paralléliser les apells

– libérer les threads

2- Supporter plus de requêtes

– diviser le nombre de requêtes par 2

– mettre du cache client et serveur

3- Architecture

– ferme de serveur static

– Reverse proxy (exemple akamai, IIS Application Request Routing)

– IIS + Node : NodeJs:

il exécute 1 seule Thread , donc  1 seule chose à la fois et il travaille en asynchrone

(Permet d’adresser de problématique de type Chat)

– il peut être hébergé sur Azure

– Attention NodeJS fait du LoadBalancing, donc on peut tomber sur le même processus.

7-      Conclusion:

L’upgrade hardware n’est pas forcement la meilleur solution ni la moins chère.Avec les bons outils on peut identifier les problèmes et les corriger.Il faut identifier les problèmes avant d’optimiser, chaque problème et chaque projet sont différents.

3 réflexions sur “TechDays 2012 : Développer le potentiel de IIS7.5

  1. Bonjour,

    Article très intéressant, mais je ne trouve pas ce fameux outil de tracing « FRED ». Avez-vous plus d’informations ?

    Merci

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s