Tests de stress des composants Data Access dans les applications DNA Windows
Mike Schelstrate

Mars 2000

Résumé

Cet article traite de l'importance des tests de stress des composants Data Access dans les applications DNA de Microsoft Windows ainsi que des moyens permettant de faciliter le processus.

Sommaire



Introduction

Le processus de développement et le déploiement d'une application DNA Microsoft Windows comprend une étape souvent négligée : soumettre l'application à un test de stress afin de garantir qu'elle se comportera comme prévu lorsqu'elle sera utilisée dans le monde de la production et qu'un grand nombre d'utilisateurs autorisés y accéderont. Cet article souligne l'importance des tests de stress dans le développement des applications utilisant les composants Microsoft Data Access (MDAC) et donne quelques conseils qui aideront à réaliser ce processus.

L'objectif de cet article est d'aider les développeurs expérimentés et les professionnels de l'informatique à concevoir et à implémenter un scénario de tests de stress complet, à analyser les résultats des tests et à recommander les modifications qui permettront de corriger les défaillances. Le lecteur doit être familiarisé avec les technologies suivantes : Microsoft Windows NT Server, Microsoft SQL Server, Microsoft Internet Information Server (IIS), Active Server Pages (ASP), Microsoft ActiveX Data Objects (ADO) et l'environnement des services de composants Microsoft (ou Microsoft Transaction Server [MTS] si vous utilisez Windows NT).

Il convient d'insister sur l'importance d'une bonne implémentation de la logique métier et des procédures d'accès aux données dans les composants COM ou DCOM, y compris les composants ADO. Pour des raisons de performance et de fiabilité, ces procédures ne doivent pas résider dans les pages ASP. Si vous considérez que la performance de votre application en situation de stress est un élément important, vous aurez probablement conçu votre application de façon à ce qu'elle utilise ces composants et tire tous les avantages de l'environnement des services de composants.

Cet article ne cherche pas à débattre des problèmes de stress posés par le navigateur client ou par les problèmes liés à la largeur de la bande passante mais s'intéresse avant tout aux composants d'accès aux données côté serveur et à leur interaction avec Internet Information Server. Ce document n'aborde pas non plus les enjeux que représente l'utilisation des services RDS (Remote Data Services).

Pourquoi soumettre mon application à des tests de stress ?

Les tests de stress devraient toujours être réalisés avant que l'application ne soit déployée dans un environnement de production. L'objectif principal des tests de stress sur les applications conçues pour le Web est d'accomplir les tâches suivantes :

  • Mesurer de façon précise les répercussions pour l'utilisateur individuel d'une augmentation de la charge d'utilisation supportée par le système
  • Déterminer la capacité maximale du matériel utilisé par l'application pour savoir si une mise à niveau du matériel est nécessaire avant de déployer l'application dans un environnement de production
  • Définir le seuil de performances acceptable en termes de temps de réponse moyen par page pour l'utilisateur de l'application
  • Garantir que le seuil de performances reste à un niveau acceptable lorsque le système est utilisé par le nombre maximal d'utilisateurs concomitants estimé

Pour la plupart des applications Web, la satisfaction de l'utilisateur est le principal facteur de succès d'une application. Toutefois de nombreuses raisons justifient de soumettre votre application à un test de stress, notamment :

  • Les applications qui fonctionnent bien pendant la phase de développement peuvent rencontrer des problèmes d'exécution lorsqu'elles sont utilisées dans un environnement soumis à un stress élevé. Par exemple, lorsque des machines Internet Information Server ou SQL Server sont utilisées simultanément par plusieurs applications, l'ajout de votre nouvelle application peut interférer avec les applications existantes ou même les interrompre si votre application n'est pas conçue pour fonctionner correctement dans cette situation.
  • L'impression que votre application laisse à vos clients lors des premières utilisations est capitale. Si elle est défavorable en raison de problèmes de stress, il sera très difficile de leur faire changer d'avis même si vous parvenez à résoudre les problèmes. En revanche, en soumettant vos applications à des tests de stress appropriés avant leur déploiement, vous vous forgerez la réputation d'un développeur qui crée des applications performantes, rapides et qui fonctionnent comme prévu.
  • L'équipe informatique responsable du déploiement et de la maintenance de votre application appréciera les tests de stress que vous aurez réalisés au moins autant, sinon plus, que vos clients. Ils sont en première ligne et c'est à eux que seront communiquées en premier lieu les opinions et les remarques. Si vous pouvez anticiper de façon fiable les problèmes d'évolutivité auxquels sera confrontée l'équipe informatique, les membres de cette équipe seront davantage prêts à vous prêter main forte si leur aide vous est nécessaire.
  • Les éventuels partenaires commerciaux doivent également être pris en compte dans la grille de satisfaction des consommateurs. Ils peuvent représenter un atout important dans le succès de votre application s'ils décident de l'inclure dans un lot d'applications plus important.

Préparation de l'exécution d'un test de stress

Pour déterminer les valeurs optimales d'analyse du serveur, ou valeurs de référence, il faut avant tout tester la configuration d'un système pilote dans un environnement contrôlé. Ensuite, vous devez effectuer le test dans un environnement de production simulé pour déterminer comment la configuration de l'environnement de production affecte les résultats du système pilote.

Lorsque vous préparez la phase de tests de stress de votre cycle de développement, vous devez vous intéresser aux points suivants :

  • Configuration matérielle et logicielle
  • Configuration serveur
  • Configuration de sécurité
  • Configuration de la charge d'utilisation
  • Sélection des bons outils de stress

Configuration matérielle et logicielle

Le système pilote doit imiter autant que possible le système de production. Les configurations matérielles de l'unité centrale, de la RAM et de la bande passante du réseau sont les domaines les plus importants à soumettre à des tests de stress. Il faut à tout prix dupliquer les configurations logicielles, comme la version et le Service Pack Microsoft Windows appropriés, la version des composants MDAC, la configuration de Internet Information Server et toute autre application qui fonctionnera sur la même machine dans le système de production réel. Installez et enregistrez vos règles métiers et vos composants COM d'accès aux données de niveau intermédiaire et configurez-les en fonction des besoins de votre application.

Assurez-vous de configurer votre site Web de test de façon à permettre une exécution in-process ou out-of-process selon la configuration finale requise. Cette option vous permet de déterminer si votre application Web s'exécutera dans le même espace d'adressage que IIS ou dans un espace d'adressage qui lui est propre. Cette configuration aura un impact majeur sur les tests de stress qui seront réalisés. Les illustrations suivantes montrent les configurations de la page de propriétés Propriétés de stress pour une application out-of-process dans Microsoft Windows NT 4.0 et dans Microsoft Windows 2000. Dans Windows NT 4.0, cochez la case Exécuter dans un espace mémoire séparé (processus isolé) pour exécuter l'application Web en mode out-of-process. Dans Windows 2000, définissez Protection d'application sur Moyenne ou sur Élevée pour exécuter l'application Web en mode out-of-process.

Figure 1. Page Propriétés de stress dans Windows NT 4.0

Figure 2. Page Stress Properties dans Windows 2000

Configuration serveur

Configurez Internet Information Server de façon à imiter le serveur du système de production. La page de propriétés Gestionnaire des services Internet fournit plusieurs options de réglage pour IIS. Il est particulièrement important de déterminer s'il faut activer l'enregistrement dans le journal (ce qui peut considérablement ralentir le système) et de sélectionner, sous l'onglet Performance, le nombre d'accès escomptés par jour.

C'est au niveau du serveur de données que la majorité des problèmes de stress peuvent être résolus. Pour obtenir une exécution efficace des requêtes, il est indispensable de normaliser de façon adéquate la conception de la base de données. Par conséquent, il faut absolument que vous réalisiez les tests de stress en utilisant la même conception de base de données que celle avec laquelle votre application est sensée fonctionner. En outre, vous devez garantir que les tables sont peuplées avec la quantité maximale de données que votre application pourra générer. De plus, assurez-vous que les options de configuration du serveur de données pour le test (surtout les niveaux de verrouillage et d'isolation et les techniques d'optimisation employées, comme l'indexation des tables) correspondent aux options de configuration du serveur de données du système de production.

Configuration de sécurité

Le système de sécurité de votre application peut avoir un impact considérable sur la performance de votre application en situation de stress élevé, surtout si ce système utilise une technologie de cryptage comme l'API de cryptographie de Microsoft. Par conséquent, vous devez configurer votre batterie de tests de façon à ce qu'elle utilise le même système de sécurité, mais pas nécessairement les mêmes autorisations. Le système d'autentification pass-through NT LAN Manager (NTLM) de Microsoft Windows est probablement le protocole de sécurité le plus utilisé pour les applications intranet qui accèdent aux enregistrement de données principaux. Si possible, vous devez envisager l'utilisation des rôles à partir des services de composants (ou MTS, dans Windows NT) pour simplifier et rationaliser le processus d'authentification de sécurité et améliorer la performance et la stabilité.

Configuration de la charge d'utilisation

Vous devez commencer par déterminer le nombre maximal d'utilisateurs qui accéderont, selon vous, à votre application, puis multiplier ce nombre par deux ; une application réussie a toutes les chances d'être utilisées par bien plus d'utilisateurs que prévu. Ensuite, calculez l'heure de la journée à laquelle la majorité des utilisateurs souhaiterons accéder à l'application et déterminez la charge que devra supporter le réseau à cette heure-là, moment auquel vous devez tester votre application. Cette stratégie vous permet de tester l'impact de la charge d'utilisation ainsi que la configuration matérielle à l'échelle du système afin de garantir que votre application réagira comme prévu aux heures de pointe du réseau.

Sélection des bons outils de stress

Dans les centres de données réels, les serveurs Web sont confrontés à des niveaux de connection élevés. En effet, les clients sont nombreux à se connecter aux applications Web, que ce soit via le réseau intranet de leur entreprise ou avec Internet. Les outils de stress Web doivent permettre de simuler un grand nombre de connections simultanées avec suffisamment de threads pour optimiser les connections concomitantes tout en limitant la taille des paquets envoyés vers le serveur Web. Heureusement, il existe de nombreux outils conçus pour simuler parfaitement ces conditions. L'un de ces outils, Web Application Stress Tool de Microsoft, est actuellement proposé gratuitement par Microsoft à l'adresse suivante : http://webtool.rte.microsoft.com/default.htm (en anglais). Il fournit toutes les capacités nécessaires ainsi que des fonctionnalités supplémentaires utiles comme l'émission de rapports détaillés.

L'outil Web Application Stress

L'outil Web Application Stress active l'environnement de test en simulant de façon réaliste la situation dans laquelle de nombreux navigateurs envoient des requêtes pour accéder aux pages d'une application Web. Il vous permet en outre d'enregistrer un script en accédant, à partir de votre navigateur, aux pages que vous souhaitez inclure dans le test. Ce script peut alors être enregistré et exécuté à partir de n'importe quel client Windows NT ou Windows 2000 disposant de l'application. Il n'est pas nécessaire d'installer autant de clients que pour l'application destinée à la production car l'outil Web Application Stress est capable de simuler plusieurs clients à partir d'une seule station de travail.

Remarque   Lorsque vous exécutez votre test de stress, veillez à ne pas accroître le niveau de stress sur les clients afin d'éviter que les machines utilisées pour le test ne passent plus de temps à gérer les changements de contexte entre les threads qu'à effectuer les tâches requises. Pour garantir que les threads sont bien distribuées sur les clients, utilisez plusieurs clients lorsque vous testez une application Web, de façon à éviter les limitations de ressources qu'impose l'utilisation d'une seule machine cliente.

Analyseur de performances

Pour soumettre vos composants d'accès aux données à des tests de stress efficaces et faire une bonne interprétation des résultats, l'utilisation d'une méthode d'analyse et d'enregistrement des statistiques de fonctionnement est indispensable. L'Analyseur de performances, fourni avec Microsoft Windows NT et Microsoft Windows 2000, est le meilleur outil disponible d'analyse et d'enregistrement de ces statistiques, à la fois dans Internet Information Server et sur votre serveur de données.

Autres outils

En plus de l'utilisation de l'Analyseur de performances sur Internet Information Server, il est nécessaire d'analyser certains compteurs personnalisés sur le serveur de données. La plupart des applications de serveur de données hautement performantes, comme Microsoft SQL Server, Oracle et Microsoft Exchange Server, incluent des compteurs d'analyse de performances personnalisés qui peuvent être utilisés pour évaluer le bon fonctionnement d'une application et du matériel sur lequel elle est utilisée.

Exécution du test de stress

Une fois que vous avez soigneusement planifié votre stratégie de test, l'exécution des tests est plutôt facile. Dans un test de performance, la première tâche consiste à utiliser un outil, comme le Web Application Stress Tool de Microsoft, pour soumettre le site Web à cette contrainte et mesurer le nombre de requêtes maximal que le serveur Web peut gérer en une seconde. Il s'agit là d'une mesure quantitative. La deuxième tâche consiste à déterminer quelles sont les ressources qui limitent le nombre de requêtes par seconde (unité centrale, mémoire ou dépendances principales) ; cette analyse relève plus de l'intuition que d'une technique de mesure à proprement parler.

Vous devez tout d'abord sélectionner les pages ASP que vous souhaitez exécuter. (Recherchez les pages les plus lentes du site Web et utilisez-les). Pour choisir les pages, vous devez vous demander quelles sont celles qui accèdent le plus souvent à la base de données et qui comportent les requêtes les plus volumineuses ou les plus complexes. Cette sélection est très importante : il vaut mieux inclure plus de pages que nécessaire que d'ignorer des chemins essentiels d'accès au code. De même, vous devez le cas échéant envisager de faire accéder votre application de test à une série de pages dans un ordre donné, de transmettre des cookies ou des chaînes de requêtes avec chaque page, tout comme le ferait l'application en situation réelle.

Remarque   En fonction de l'application, il peut être nécessaire de préparer les pages ASP avant le test. Pour certaines de vos pages, vous devrez pré-programmer les valeurs de paramètres habituellement générées par l'application et que l'outil de stress Web est incapable de produire de façon dynamique.

Lorsque vous exécutez votre application dans Internet Information Server, vous devez analyser (grâce à l'Analyseur de performances) les compteurs suivants :

  • Pages ASP : requêtes par seconde, requêtes rejetées, longueur totale de la file d'attente et nombre de sessions en cours
  • Processus Inetinfo : octets privés, octets virtuels et nombre de handles ouverts
  • Processeur : pourcentage de temps utilisateur contre pourcentage de temps privilégié
Remarque   Si votre application fonctionne dans son propre espace de mémoire sur Windows NT 4.0 (ou avec la page Stress Properties définie sur Protection d'application : Élevée [Isolée] dans Windows 2000), vous devez analyser mtx.exe (ou le processus dllhost dans Windows 2000) plutôt que le processus Inetinfo.

Comme le montre l'illustration suivante, le compteur du nombre de requêtes par seconde des pages ASP dans l'analyseur de performances affichera le débit réel de votre application (1 000 requêtes/seconde dans cet exemple). Ces données statistiques vous permettront d'analyser la performance de Internet Information Server en situation de stress et de repérer les éventuels goulets d'étranglement. Vous pourrez ainsi évaluer la capacité de votre application à servir un nombre maximal d'utilisateurs dans un temps de réponse acceptable.

Figure 3. Analyseur de performances

Un serveur Web utilisant la technologie ASP attribue à chaque requête de page une thread issue d'une réserve définie au démarrage ; si toutes les threads sont utilisées, les requêtes de page suivantes sont placées dans une file d'attente. En mesurant la longueur totale de la file d'attente avec l'Analyseur de performances, vous pouvez déterminer le nombre de clients en attente d'une réponse du serveur.

Les blocages et les verrouillages d'accès concurrentiels sont deux des problèmes de base de données les plus courants liés au stress et qui ne soient pas d'origine matérielle. Sur le serveur de données, vous devrez utiliser les résultats des compteurs personnalisés de l'Analyseur de performances fournis par les stocks de données pour analyser au minimum les points suivants :

  • Requêtes de verrouillage
  • Blocages par seconde
  • Augmentations de verrous de tables par seconde
  • connections utilisateur
  • Transactions actives

Votre application Web doit aussi être configurée pour utiliser la concentration des ressources OLE DB, qui est gérée automatiquement par le fournisseur OLE DB de niveau intermédiaire pour Microsoft SQL Server 7.0. En créant les objets de connection pour chaque page et en les libérant immédiatement, la base de données peut gérer des milliers d'utilisateurs concomitants avec beaucoup moins de connections ouvertes à la base de données. Cela permet de conserver les ressources de la base de données et d'accroître l'évolutivité. Cette amélioration de la performance peut être analysée en suivant l'évolution du nombre de connections utilisateur (grâce à l'analyseur de performances) sur le serveur de données. Avec l'augmentation du débit, le nombre de connections utilisateur doit rester stable tandis que la concentration limite le nombre de connections réellement créées sur le serveur de données.

Le processus de réglage d'une application par rapport à la base de données est essentiel à la réussite des objectifs de performance et doit être intégré au cycle de développement. Il consiste notamment à optimiser la taille de la mémoire allouée, à distribuer l'application sur les lecteurs et les contrôleurs et à localiser les composants ActiveX sur les machines. Efforcez-vous si possible d'éliminer le tri des données entre les processus, cette opération étant très coûteuse.

Exécutez le test de stress sur une durée supérieure de 50 % à la durée d'utilisation sans interruption prévue pour l'application en situation réelle. De nombreux problèmes, notamment des fuites de mémoire, ne se manifestent qu'après une utilisation prolongée de l'application.

Ce qu'il faut rechercher lors du test de stress

La valeur moyenne de chaque compteur de l'Analyseur de performances est déterminée par la configuration spécifique de votre application et de votre matériel. Par conséquent, lorsque vous exécutez des tests de stress, vous devez vérifier chaque compteur et guetter tout écart par rapport à ces valeurs moyennes.

Analyse de Internet Information Server

Lorsque vous recherchez les goulets d'étranglement, les domaines les plus importants à analyser sur la machine Internet Information Server sont les suivants :

  • Utilisation de l'unité centrale
  • Utilisation de la mémoire
  • Débit

En fonction de l'environnement d'application prévu, vous pouvez également souhaiter analyser d'autres domaines de performance lors des tests de stress. Chacun des scénarios suivants peut indiquer un problème dans votre application qui pourrait être résolu avant la version finale.

Utilisation de l'unité centrale

La diminution de l'utilisation de l'unité centrale peut indiquer une diminution de la performance de l'application, probablement un problème de contention de threads.

Lorsque vous analysez la proportion du temps UC utilisée par le temps utilisateur d'une part et le temps du noyau d'autre part, rappelez-vous que le temps utilisateur doit, en règle générale, représenter 80 à 90 % du temps UC total. Par conséquent, si le temps mode noyau dépasse 20 %, cela indique une contention des appels API au niveau du noyau.

Pour que vos machines soient rentables, vous devez enregistrer un taux d'utilisation des processeurs supérieur à 50 % lors des pics de connection. Une valeur d'utilisation inférieure peut révéler l'existence d'autres goulets d'étranglement dans votre système. Il vous faudra les résoudre.

Utilisation de la mémoire

L'augmentation soudaine ou progressive de l'utilisation de la mémoire est un autre type de problème couramment observé lors de l'utilisation prolongée des applications serveur. Lorsque cela se produit, des fuites de mémoire et de ressources sont généralement détectées pendant la phase de test.

Débit

L'analyse du compteur du nombre de requêtes par seconde des pages ASP vous permet de savoir si et quand votre application commence à rencontrer des problèmes de performance. En situation réelle, ce compteur varie généralement mais en définissant avec soin le nombre de threads et de connections concomitantes (par exemple, à partir de l'écran de configuration de l'outil Web Application Stress), vous serez capable de simuler un nombre de requête constant. Une chute soudaine de ce compteur indique un problème.

Tests optionnels

Les exemples suivants montrent d'autres types d'analyses que vous pouvez souhaiter réaliser lors des tests de stress :

  • Longueur totale de la file d'attente.   Généralement, le compteur Total Queue Length de l'analyseur de performances varie constamment. Par conséquent, si la longueur totale de la file d'attente n'augmente jamais alors que le taux d'utilisation des processeurs est peu élevé, cela peut indiquer que le site fonctionne trop facilement et qu'il dispose d'une capacité excessive pour cette charge de stress. Si la longueur de votre file d'attente fluctue mais que vos processeurs fonctionnent en dessous de 50 %, cela peut indiquer que certaines de vos requêtes bloquent et nécessitent d'être optimisées.
  • Temps de réponse du navigateur.   Vous pouvez accéder régulièrement à vos pages ASP à partir d'un navigateur pour analyser le temps de réponse et garantir que le test de stress fonctionne bien et que le site Web est toujours capable de servir correctement les pages ASP. Nous vous recommandons de réaliser ces analyses au moins deux fois par jour pendant toute la durée des tests.
  • Erreurs de temporisation.   Pendant les tests du navigateur, restez attentif aux erreurs de temporisation qui sont renvoyées par Internet Information Server ; ces erreurs peuvent indiquer qu'un trop grand nombre d'utilisateurs cherchent à accéder à l'application simultanément.
Analyse du serveur de données

Le traitement interne, par le serveur de données, des différents services MDAC et le formatage des données à afficher consomment généralement la majorité des ressources serveur destinées à l'application Web. Par conséquent, lorsque vous soumettez l'application à des tests de stress, vous devez absolument vous pencher sur la performance de ces composants puisqu'elle est liée à l'accès aux données et à la manipulation de ces données dans l'application.

Les connections utilisateur à la base de données, les contentions de verrouillage et les blocages sont les premiers éléments à analyser sur le serveur de données. Consultez périodiquement les informations de processus dans la console de management de votre base de données (par exemple, sur une machine utilisant SQL Server, dans la zone Activité en cours de SQL Enterprise Manager). Recherchez les ID bloquant le processus serveur, cause courante d'une absence de réponse aux requêtes de données. Il s'agit d'un problème de contention qui requiert généralement des modifications importantes dans la conception de la base de données ou dans la logique de l'application.

Les blocages peuvent être repérés de diverses manières. La méthode la plus courante pour les identifier consiste à utiliser le compteur personnalisé Nombre d'interblocages/seconde de l'Analyseur de performances. Votre application doit déjà pouvoir rechercher les problèmes de blocage et y répondre de façon appropriée parce que si on laisse le serveur de données désigner la victime du blocage (c'est à dire l'utilisateur ou la session qui sera annulée pour résoudre ce blocage), cela peut engendrer des problèmes pour votre application. L'application doit détecter l'état de blocage dès son apparition et réagir en conséquence. La réponse fréquente à ce type de problème consiste à attendre quelques millisecondes et à tenter à nouveau l'opération ; en principe, les blocages sont des erreurs sensibles au temps qui disparaissent lorsque l'opération est réitérée.

Évaluation des résultats d'un test de stress

Lorsque les tests de stress sont terminés et que les résultats sont disponibles pour vérification, la comparaison entre les références de performance cible et les données statistiques collectées pendant les tests indiquera les modifications nécessaires pour garantir un débit conforme aux attentes des utilisateurs. Vous trouverez ci-dessous les domaines spécifiques qu'il vous faudra passer en revue et évaluer en vue de corriger comme il se doit les problèmes de performance :

  • Matériel
  • Conception de la base de données
  • Composants ActiveX
  • Curseurs client
  • Exécution ASP
  • Charge de Internet Information Server

Matériel

La mise à niveau du matériel est probablement la solution la plus facile et la moins coûteuse pour accroître le débit de votre application. Normalement, il est beaucoup plus rentable de mettre à niveau votre matériel que de payer une équipe de développeurs pour réécrire certaines parties de l'application. Par exemple, en ajoutant simplement de la RAM à votre serveur, vous pouvez doubler le débit de votre application. Toutefois, si les résultats des tests indiquent que l'origine du goulet d'étranglement est l'utilisation de l'UC, la mise à niveau peut s'avérer plus coûteuse car il faudra probablement mettre à niveau toute la machine et accroître le nombre d'unités centrales et leur vitesse.

Il existe d'autres moyens d'améliorer le matériel : accroître la vitesse de vos disques durs et de vos contrôleurs, mettre des cartes d'interface réseau plus rapides ou en accroître le nombre.

Conception de la base de données

Lorsque vous abordez les problèmes relatifs à la conception de la base de données, recherchez les points névralgiques. Analysez les statistiques de blocage et vérifiez que votre application est optimisée pour éviter les blocages autant que possible. Envisagez si nécessaire de modifier les algorithmes d'accès aux données afin d'éviter la contention. Essayez différentes solutions d'indexation. Étudiez le plan d'exécution des requêtes de votre serveur de données pour vérifier que vos requêtes utilisent les bons index, et ainsi de suite.

Composants ActiveX

Les composants ActiveX, qui incluent des références à la bibliothèque de types des objets de données ActiveX, doivent faire l'objet d'une analyse attentive en vue d'une optimisation. N'utilisez pas les propriétés par défaut autorisées dans ADO. Pour éviter d'utiliser accidentellement une propriété par défaut, définissez toujours les propriétés (Cursor Type ou Cursor Location, par exemple).

Curseurs client

Si votre application Web consomme une quantité de mémoire anormalement élevée, l'origine du problème peut être une mauvaise utilisation des emplacements des curseurs. Lorsque vous utilisez des curseurs client (recordset.cursorlocation = adUseClient), pensez que le client est en fait Internet Information Server et non le navigateur. (Il existe une exception à cette règle lorsque vous utilisez Remote Data Services, mais elle n'est pas présentée dans cet article). Le fait de penser que le curseur client déplace l'ensemble du jeu d'enregistrements vers le navigateur plutôt que vers une machine utilisant IIS est une erreur fréquemment commise par les développeurs. Par conséquent, rappelez-vous que vous enregistrez en fait le jeu d'enregistrements sur une machine utilisant IIS. Cela vous permettra de mieux évaluer la quantité de ressources utilisées.

Par exemple, si votre application doit accéder à une table où figurent un état valide ou des codes départementaux et que ces informations sont enregistrées dans un serveur de données, il est beaucoup plus efficace d'utiliser un curseur client pour créer un jeu d'enregistrements qui réside sur la machine IIS et d'accéder ensuite localement aux codes en évitant ainsi les aller-retours inutiles vers le serveur de données chaque fois que l'application accède à ces données. Assurez-vous simplement que vous tenez bien compte des échanges et ne surchargez pas la mémoire de l'IIS si la mémoire disponible est insuffisante.

Exécution ASP

Si vos pages ASP qui contiennent les procédures d'accès aux données sont trop longues à exécuter, il peut s'avérer nécessaire de déplacer le code d'accès aux données depuis les pages ASP vers les composants ActiveX, placés de préférence dans des lots au sein de Microsoft Transaction Server (dans Windows NT) ou des services de composants (dans Windows 2000), en fonction du système d'exploitation que vous utilisez. Ce code compilé fonctionne de façon beaucoup plus efficace que le code crypté et interprété contenu dans les pages ASP.

Charge de Internet Information Server

Analysez le nombre et les types d'applications utilisant Internet Information Server. Vous devrez peut-être ajouter d'autres serveurs, déplacer l'application vers un autre serveur ou envisager d'implémenter le Service Équilibrage de charge de Windows.

Conseils pour réussir un test de stress

  • À faire :
    • Placez toute votre logique métier dans des composants ActiveX et utilisez les pages ASP comme une colle permettant de maintenir le tout. Encapsulez le code réutilisable dans des bibliothèques.
    • Utilisez MTS (utilisateurs de Windows NT). Cet outil performant permet de concentrer davantage les threads et les ressources pour les objets COM côté serveur et de gérer plus facilement les objets. De plus, MTS offre des capacités transactionnelles.
    • Utilisez la concentration des ressources et des connections. Cette fonctionnalité MDAC est activée par défaut mais on doit la contrôler pour garantir son bon fonctionnement.
    • Réglez votre stock de données. Utilisez si possible des procédures stockées.
    • Pour réduire au maximum le nombre d'opérations d'accès aux données, utilisez la mise en cache pour les entrées, les sorties et les données transformées.
    • Utilisez des applications in-process et des composants ActiveX dès que vous en avez l'occasion.
    • Assurez-vous que le débogage est désactivé dans un environnement de production. Le débogage d'une application force l'affinité des threads.
    • Dans un environnement intranet, confiez certaines tâches au navigateur client lorsque cela est possible.
    • Passez à Windows 2000. Les améliorations de performance et d'évolutivité proposées dans cette nouvelle version sont évidentes lorsque vous devez soumettre une application à un test de stress.
    • Si vous ne pouvez pas encore passer à Windows 2000, il est conseillé d'adopter au moins Microsoft Visual Basic Scripting Edition (VBScript) 5.0. Les performances et la fonctionnalité ont été considérablement améliorées dans cette nouvelle version.
    • Envisagez d'utiliser Microsoft Message Queue Server (MSMQ). Une bonne utilisation de la messagerie asynchrone améliorera de façon considérable les temps de réponse perçus par les utilisateurs.
  • À éviter :
    • Utiliser des objets d'application ou de session dans les pages ASP.
    • Placer votre code d'accès aux données dans les pages ASP. Utiliser le code de script pour communiquer avec les fonctions d'accès aux données et les règles métier contenues dans les composants ActiveX.
    • Utiliser le protocole HTTPS/protocole de communication sécurisée SSL, sauf en cas d'absolue nécessité. Ce protocole d'authentification est très coûteux à implémenter.
    • Utiliser l'état de l'application ou l'état de la session alors que cela n'est pas nécessaire.

Synthèse finale

Grâce à Internet, vos applications peuvent accéder à un nombre d'utilisateurs bien plus élevé que les applications client-server traditionnelles. Aujourd'hui, les organisations sont de plus en plus nombreuses à considérer le Web comme faisant partie intégrante de leur stratégie d'entreprise. Elles doivent donc être sûres que la technologie qu'elles utilisent est capable de satisfaire leurs exigences. Les organisations ont besoin non seulement d'outils faciles à utiliser, mais aussi d'une infrastructure capable de gérer leurs besoins en termes de charge d'utilisation. Il est par conséquent plus important que jamais de considérer les tests de stress comme une partie fondamentale de votre politique de tests, surtout si vous incorporez MDAC dans votre application.

Remarque   Pour pouvoir fonctionner correctement en situation de stress, il faut avant tout s'intéresser aux meilleures pratiques dans le cycle de développement. Cela signifie qu'il faut prévoir dès la phase de développement le temps nécessaire pour réaliser des tests de performances en situation de charge et corriger les applications en vue de satisfaire les objectifs de performance.

Les avantages des tests de stress et des réglages répétés de votre application en situation de charge sont évidents :

  • Vous obtenez les informations dont vous avez besoin pour garantir le meilleur débit possible pour votre application.
  • Vous pouvez évaluer avec précision les caractéristiques d'évolutivité de votre application que vous pourrez ainsi ajuster de façon à atteindre vos objectifs de performance.
  • Vous pouvez identifier tôt dans le processus les problèmes de conception susceptibles de dégrader la performance et le débit et réaliser les modifications qui s'imposent avant le déploiement de l'application dans un environnement de production.
  • Vos applications se forgeront, auprès de vos clients et de vos partenaires commerciaux, la réputation de programmes à la fois fiables et très performants.


Dernière mise à jour le mardi 6 juin 2000



Page view tracker