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

ASP.NET Discussion :

surcharge serveur, des idées ?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut surcharge serveur, des idées ?
    Bonjour à tous,

    Je ne sais pas si je suis sur la bonne section du forum, car mon problème concerne la config de mon serveur dans sa globalité (IIS / SQL Server / .NET etc)

    Voila, la config de mon serveur est la suivante :
    IIS 5
    Windows 2000 Server
    SQL Server 2000 SP4

    J'ai récemment fait activé l'HTTP compression de IIS pour réduire le poids des pages, ainsi qu'une DLL qui gère le rewriting d'URL.

    Depuis quelques jours, le serveur charge beaucoup trop (CPU occupé à 95%), et j'essaye de résoudre ce problème. J'ai activé la mise en cache d'une partie de l'appli, mais apparemment, cela a saturé la RAM (systemOutOfMemory exception).
    Je vais tenter de mettre une plus petite partie de l'appli en cache en espérant trouver le juste milieu entre libérer le CPU et sans trop charger la RAM, mais j'essaye de trouver d'autres pistes à tester.
    - Voyez-vous d'autres critères que je pourrais modifier au niveau de l'appli ?
    - si la charge persiste, pensez-vous qu'en passant sur un IIS 7 / Windows Serveur 2008 / SQL Serveur 2008 cela va résoudre mon problème (la version 2000 a plus de 10 ans, je me dis que la dernière version doit surement mieux gérer les ressources non ?).

    Merci !

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Il te faudrait déjà identifier la cause du problème avant d'envisager un changement de serveur (au passage si tu as les moyens et la possibilité, mieux vaut toujours séparer le serveur Web du serveur SQL... enfin ça dépend de la taille de l'application aussi).

    Bref, as-tu fait un peu de monitoring ? Est-ce IIS qui consomme beaucoup ? Si oui pour combien d'utilisateurs connectés ? Est-ce que l'utilisation de la RAM est constante ou fonction du nombre d'utilisateurs ?
    Est-ce SQL Server ? Si oui, quelles requêtes, que peux-tu optimiser ? Etc...

    Sinon, combien de RAM as-tu pour faire tourner conjointement IIS et SQL Server ?

    Il y a encore beaucoup de questions de ce type à se poser.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut
    Merci pour ta réponse !

    Malheureusement, je n'ai que peu d'informations, je ne suis pas administrateur de la machine, mon serveur web est en infogérance chez mon hébergeur.
    J'ai fait redémarrer le serveur ce matin, donc la charge est descendue, mais j'ai demandé à mon hébergeur de surveiller le processus qui consomme en CPU à la prochaine charge du serveur.

    Ce que je sais c'est que la machine a 4 Go de RAM, le trafic mensuel est de 300 000 VU/mois, en moyenne lorsque ça charge, on est entre 600 et 700 VU sur une heure, mais je n'ai pas le nombre de connexions simultanées.

    On ne peut malheureusement pas séparer le serveur SQL du serveur web, comme on est en infogérance, cela ferait trop grimper le coup de l'hébergement. C'est d'ailleurs pour cela que si l'on arrive pas à résoudre le problème de charge en jouant sur les paramètres de l'application, j'hésite à louer un 2e serveur + load balancer car c'est couteux, ou à basculer sur du 2008, car ce sera peut être couteux pour acheter les licences, mais le coup de l'hébergement devrait rester le même. Je ne sais juste pas si basculer sur du 2008 aura vraiment un impact sur les perfs, ou si ce sera négligeable par rapport à l'investissement.

    Sais-tu si il existe des logs des slow Query sur SQL Server ? Il y a effectivement beaucoup de requêtes qui tournent, j'ai limité le plus possible le nombre de requête mais il y a tout de même des requêtes lourdes et j'aimerais savoir lesquelles.

  4. #4
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    OK, il est sûr que sur un hébergement en infogérance on ne peut tout faire (ni tout s'offrir surtout...).

    Déjà, pour surveiller ta base tu peux utiliser SQL Server Profiler et faire un tour sur le forum SQL Server. De nombreux DBA plus expérimentés que moi dans ce domaine pourrait te guider.

    Ensuite concernant la compression ce n'est pas la solution à tout. Ok, la taille des pages renvoyée du serveur Web au client est réduite, mais si le résultat n'est pas mis en cache il y a compression à chaque requête. Et qui dit compression dit consommation CPU :

    La compression des réponses d'applications dynamiques peut affecter les ressources processeur, car IIS ne met pas en cache les versions compressées de sortie dynamique. Si la compression est activée pour les réponses dynamiques et qu'IIS reçoit une demande pour un fichier qui contient un contenu dynamique, la réponse qu'IIS envoie est compressée à chaque demande. Dans la mesure où la compression dynamique consomme une quantité importante de temps processeur et de ressources mémoire, utilisez-la uniquement sur les serveurs qui ont des connexions réseau lentes, mais du temps processeur de libre.
    Le problème de conso CPU est intervenu après l'activation de la compression ou ça n'a rien à voir ?

    Si c'est la cause du problème et que tu souhaite la gardée activée, tu devrais surtout penser à la mise en cache de sortie. 600 pages vues par heure donne une moyenne d'une page vue toutes les 6 secondes, c'est plus que gérable avec un serveur de base.

    En espérant t'avoir aidé.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut
    Merci pour ta réponse !

    Le problème de la conso CPU est intervenu peu de temps après l'activation de la compression HTTP (dans la même semaine mais pas immédiatement après).
    En fait j'ai besoins de l'HTTP compression pour diminuer le poids des pages car elles sont vraiment lourdes. Même le webmaster tools de Google me dit de Gziper mes pages pour les alléger. Vu que poids des pages + temps de chargement est un critère de référencement, j'essaye de ne pas me pénaliser en ayant des pages trop lourdes. Il faudrait donc que j'arrive à la conserver sans trop prendre sur le CPU.

    Qu'entends tu pars "mise en cache de sortie". Tu veux dire qu'actuellement j'ai

    - Execution -> mise en cache -> GZip : En gros, le Gzip se fait à chaque consultation

    et ce que tu me suggères c'est :

    - Execution -> GZip -> mise en cache ?

    C'est bien ça ? Si c'est ça, ce sera effectivement super par contre, je n'ai aucune idée de comment je peux gérer ça. J'utilise la mise en cache "basique" des pages .NET (balise Outputcache). Tu as des pistes sur lesquelles je pourrais me renseigner ?

    En attendant, je vais déjà regarder SQL Profiler ! Merci pour ton aide

  6. #6
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Il existe plusieurs techniques de cache (Output Cache, Data Cache, etc.), et également plusieurs façons de les mettre en œuvre : avec IIS ( pour cela la version 7 est toujours mieux que la 6 qui est toujours mieux que la 5. Un article intéressant qui compare IIS 7 et 6), ou ASP.NET.

    Côté IIS je ne suis pas expert. Travaillant surtout sur des projets où les serveurs Web sont gérés par des admins, je me concentre généralement sur la partie ASP.NET.

    Ce que j'ai l'habitude de faire c'est de mettre en place des HttpModules ou HttpHandler pour gérer plusieurs choses : la compression, le minifying, et la mise en cache. Exemple : combiner plusieurs fichiers javascript en un seul pour éviter les aller-retours client/serveur, puis minifier celui-ci, puis compression du fichier combiné, pour enfin le mettre en cache. Même chose pour les fichiers .css. Ou encore un HttpHandler pour gérer les différents types d'images (compression si possible selon le format, puis mise en cache).

    J'ai appris de très nombreuses choses en lisant les très bons articles d'Omar Al Zabir, MVP depuis plusieurs années et créateur de dropthings. Je t'invite à consulter ceux-ci :


    Plus généralement, il y a pas mal de petites choses utiles à mettre en place pour améliorer les performances d'une application ASP.NET. Ces deux billets en listent une partie mais il existe pas mal d'autres blogs qui donnent des conseils à ce sujet. Évidemment, dans certains cas les performances ne sont pas améliorées voire le contraire. Cela dépend bien entendu de l'application, du type traitements, du serveurs, etc.


    J'envisage depuis quelques temps de mettre en place une série d'articles sur les performances d'une application ASP.NET, la mise en cache, le load balancing, les stress test et scénarios de validations, etc. Mais... faut trouver le temps

    Autre chose, les webmaster tools de Google c'est bien, mais il y a beaucoup mieux. Tu peux par exemple utiliser des extensions Firefox qui fonctionnent avec Firebug (ou l'équivalent pour d'autres navigateurs) de ce type :


    Voilà, N'hésite pas si tu as d'autres questions.

    En espérant t'avoir aidé.

Discussions similaires

  1. [Tableaux] Cherche des idées
    Par espadon1 dans le forum Langage
    Réponses: 14
    Dernier message: 01/08/2006, 13h32
  2. Des idées pour une confrontation de langages ?
    Par Madmac dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 30/04/2006, 01h14
  3. [Tomcat] [JAAS] Des idées mais pas de solution concrètes
    Par cgougeon dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 27/09/2005, 14h22
  4. Comment identifier le nom du serveur des sites internet ?
    Par Xavier dans le forum Web & réseau
    Réponses: 7
    Dernier message: 24/07/2005, 19h35

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