IBM WebSphere Application Server, Advanced Edition

Guide d'optimisation des réglages


Nouveautés en matière d'optimisation des performances

Assistant d'optimisation des réglages de performances

Mise en cache des fragments dynamiques

Bases de l'optimisation des réglages

   Quels sont les points ayant une incidence sur l'optimisation des réglages ?

   Tableau des symptômes

   Types de réglages

      Optimisation des paramètres

           Optimisation des paramètres avec un impact élevé
           Optimisation des paramètres pour éviter les incidents

   Ajustement des files d'attente système de WebSphere Application Server

      Réseau de mise en file d'attente WebSphere

            Files d'attente fermées et files d'attente ouvertes
            Réglages des files d'attente dans WebSphere

      Détermination des réglages

             Mise en file d'attente en amont de WebSphere

            Traçage d'une courbe de débit

            Ajustement des files d'attente
            Ajustement des files d'attente en fonction des schémas d'accès

      Mise en file d'attente et beans enterprise

      Mise en file d'attente et utilisation de clusters

    Optimisation des réglages de Secure Socket Layer

       Etablissement de la connexion et chiffrement/déchiffrement en bloc - Présentation

       Amélioration des performances Secure Socket Layer

    Liste de vérification des performances d'assemblage d'applications

   Optimisation des réglages de la mémoire Java

      Le goulet d'étranglement provoqué par la récupération de place

      La récupération de place utilisée comme jauge

      Détection d'une utilisation excessive d'objets

      Détection des fuites de mémoire

      Paramètres du segment Java

   Nombre de connexions à DB2

   Paramètres TCP sous Solaris

    Topologie de la gestion de la charge de travail

Paramètres de performances individuelles

   Paramètres et capacité du matériel

      Vitesse du processeur

      Mémoire

      Réseau

   Paramètres du système d'exploitation

       Paramètres TCP/IP de Windows NT/2000

             TcpTimedWaitDelay pour Windows NT/2000
             MaxUserPort pour Windows NT/2000

       AIX (4.3.3)

            Descripteurs de fichiers AIX (ulimit)

       Solaris

            Descripteurs de fichiers Solaris (ulimit)
            Paramètres tcp_close_wait_interval/tcp_time_wait_interval sous Solaris
            Paramètre tcp_fin_wait_2_flush_interval sous Solaris
            Paramètre tcp_keepalive_interval sous Solaris
             Autres paramètres TCP sous Solaris
            Paramètre semsys:seminfo_semume du noyau Solaris
            Paramètre semsys:seminfo_semopm du noyau Solaris

      HP-UX 11

             Réglage à 64 Ko de la taille de page virtuelle de la JVM de WebSphere Application Server.
             Paramètre tcp_conn_request_max sous HP-UX 11
            Paramètres du noyau recommandés sous HP-UX 11

   Le serveur Web

      Intervalle de rechargement de la configuration du serveur Web

       IBM HTTP Server - AIX et Solaris

             MaxClients
             MinSpareServers, MaxSpareServers et StartServers

       Netscape Enterprise Server - AIX et Solaris

            Unités d'exécution actives

       Microsoft Internet Information Server - Windows NT/2000

             Autorisations d'accès à Internet Information Server
             Nombre d'accès escomptés chaque jour
            Paramètre ListenBackLog

       IBM HTTP Server - Linux

             MaxRequestsPerChild

       IBM HTTP server - Windows NT/2000

             ThreadsPerChild
             ListenBackLog

   Le processus du serveur d'applications WebSphere

       Adaptation de la priorité des processus du serveur d'applications

      Conteneurs Web

             Nombre maximal de connexions ThreadsMax du conteneur Web
             Signal de présence maximal de transport
             Nombre de requêtes maximal de transport par signal de présence
            Mémoire cache d'appel d'URL
             Admission d'allocation d'unité d'exécution au delà du maximum

      Conteneur d'EJB

            Paramètres de la cache
             Séparation des beans enterprise CMP en plusieurs modules de beans enterprise

       Sécurité

            Désactivez la sécurité si vous n'en avez pas besoin
            Adaptation du délai d'expiration de la cache de sécurité à votre environnement
            Types et tailles des caches de sécurité (paramètres système)
            Configuration adéquate des sessions SSL

       Object Request Broker (ORB)

            Transmission par valeur et Transmission par référence (noLocalCopies)
             com.ibm.CORBA.ServerSocketQueueDepth
             com.ibm.CORBA.MaxOpenConnections et taille maximale de la cache des connexions d'Object Request Broker
            Taille du pool d'unités d'exécution ORB (Object Request Broker)
            Utilisation de JNI ReaderManager et de Reader Threads

   Machines virtuelles Java (JVM)

      Démarrage de Sun JDK 1.3 HotSpot à l'aide de l'option -server

      Sun JDK 1.3 HotSpot - Nouvelle génération de taille de pool

      Compilateur JIT (Just In Time)

      Paramètres de taille de segment

      Programme de récupération de place pour les classes

   La base de données

      Emplacement de la base de données

      Taille du pool de connexions de la source de données WebSphere

      Taille de la cache des instructions préparées

      DB2

            Utilisation de sockets TCP pour DB2 sous Linux
            Paramètre DB2 MaxAppls
            Paramètre DB2 MaxAgents
            Pool de mémoire tampon DB2
            Niveau d'optimisation des requêtes DB2
            DB2 reorgchk
            DB2 MinCommit

   Gestion des sessions

    Programme d'écoute des messages de WebSphere Application Server Enterprise Extensions

       Nombre de sessions maximal

      Plusieurs serveurs d'applications à l'écoute dans la même file d'attente

Autres références

Procédures des outils de performances

       Démarrage de l'analyseur de performances de Windows NT/2000



Nouveautés en matière d'optimisation des performances

Assistant d'optimisation des réglages de performances
Mise en cache des fragments dynamiques

Assistant d'optimisation des réglages de performances

Il s'agit d'un outil inclus dans WebSphere Application Server, Advanced Edition qui présente les paramètres relatifs aux performances les plus courantes associés au serveur d'applications. Il permet d'optimiser les paramètres des applications, servlets, beans enterprise, sources de données et charge prévue. Les paramètres peuvent être définis pour inclure :

Pour l'appeler à partir de la console d'administration, sélectionnez Console > Assistants > Optimiseur de performances.

Pour plus d'informations, consultez l'article 6.6.21 de l'InfoCenter.

Mise en cache des fragments dynamiques

Il s'agit de la capacité à mettre en cache la sortie des fichiers JSP et des servlets dynamiques. Cette technologie engendre une importante amélioration des performances de l'application. Cette mise en cache, qui fonctionne dans la JVM d'un serveur d'applications, intercepte les appels envoyés vers une méthode service() d'un servlet, vérifiant qu'elle peut servir l'appel à partir de la cache plutôt que d'exécuter à nouveau le servlet. Les applications J2EE ayant des taux élevés d'occupation et ne pouvant tolérer qu'un faible degré de latence dans le rafraîchissement de leurs données, la mise en cache des fragments peut permettre de réaliser d'importants gains en matière de temps de réponse du serveur, débit et évolutivité.

Lorsqu'un servlet a été exécuté (générant la sortie qui sera mise en cache), une entrée de cache est générée contenant cette sortie. Les effets secondaires de l'exécution (autrement dit, l'appel d'autres servlets ou JSP), ainsi que les métadonnées relatives à l'entrée incluant le délai d'expiration et les informations de priorité de l'entrée sont également générés. Les entrées uniques se distinguent par une chaîne d'ID générée à partir de l'objet HttpServletRequest pour chaque appel de servlet. Ceci résulte en un servlet mis en cache en fonction des paramètres de la demande, de l'URI utilisé pour appeler le servlet ou des informations de session. Comme les fichiers JSP sont compilés par WebSphere Application Server dans les servlets, les fichiers JSP et les servlets sont utilisés de manière interchangeable (sauf pour la déclaration des éléments dans un fichier XML).

Pour ce faire :

  1. Dans la console administrative, sélectionnez le serveur d'applications à optimiser.
  2. Cliquez sur Services > Service de conteneur Web > Edition des propriétés.
  3. Sélectionnez l'onglet Mise en cache de servlet et cochez la case Activer la mise en mémoire du servlet.
  4. Cliquez sur OK et enregistrez les modifications.
  5. Redémarrez le serveur d'applications.

Pour plus d'informations consultez l'article 4.5: Mise en cache des fragments dynamiques de l'InfoCenter.

Tableau des symptômes

Il permet de revoir rapidement l'optimisation des réglages. Vous pouvez accéder rapidement aux symptômes et trouverez un lien rapide vers les informations de réglage liées au symptôme en question. Le tableau contient le type d'informations suivantes :

Symptôme Informations supplémentaires
Le débit et le temps de réponse ne sont pas acceptables. Vitesse du processeur
AIX : Erreur d'allocation de mémoire
Solaris : Un nombre trop élevé de fichiers est ouvert
Descripteurs de fichiers AIX (ulimit) ou Descripteurs de fichiers Solaris (ulimit)
Solaris : Le serveur se bloque, les réponses prennent plusieurs minutes, l'utilisation du processeur reste élevée en raison de l'activité des processus du système et netstat indique que plusieurs sockets sont ouverts sur le port 80 et sont associés à l'état CLOSE_WAIT ou FIN_WAIT_2. Solaris tcp_close_wait_interval/tcp_time_wait_interval et Solaris tcp_fin_wait_2_flush_interval
Windows NT/2000 : Netstat indique qu'un nombre trop élevé de sockets est associé à TIME_WAIT. TcpTimedWaitDelay dans Windows NT/2000
HP-UX 11 : Le débit n'est pas acceptable et la priorité du serveur d'applications n'a pas été adaptée. Redéfinition de la priorité du système d'exploitation associée au processus WebSphere Application Server
En charge, les demandes du client n'arrivent pas au serveur Web car leur délai expire ou elle sont rejetées. Pour HP-UX 11, consultez Paramètres tcp_conn_request_max sous HP-UX 11
Pour IIS Windows NT/2000, consultez Paramètre ListenBackLog
Pour IBM HTTP Server sous NT, consultez ListenBackLog
Windows NT/2000 : Les performances de WebSphere Application Server ont diminué après l'installation d'un serveur d'applications d'un autre fournisseur. Autorisations d'accès à IIS
L'attribut percent maxed de Resource Analyzer indique que le pool des unités d'exécution du conteneur Web est trop petit. Taille maximale de l'unité d'exécution du conteneur Web
Netstat affiche un nombre trop élevé de sockets dont l'état est TIME_WAIT pour le port 9080. Nombre maximal de connexions maintenues actives pour le transfert du conteneur Web
Le nombre d'entrées-sorties sur disque est trop élevé en raison de la pagination. Paramètres de taille de segment
L'attribut percent used de Resource Analyzer du pool de connexions de la source de données indique que la taille du pool est trop élevée. Taille du pool de connexions de la source de données WebSphere
L'attribut prepared statement cache discards de Resource Analyzer indique que la taille de la mémoire cache de l'instruction préparée de la source de données est trop petite. Taille de la cache des instructions préparées
Le nombre d'entrées-sorties sur disque est trop élevé en raison de l'enregistrement dans les journaux DB2. DB2 MinCommit
L'attribut percent maxed de Resource Analyzer indique que le pool des unités d'exécution d'Object Request Broker est trop petit. Mise en file d'attente et beans enterprise
L'interface JVMPI (Java Virtual Machine Profiler Interface) de Resource Analyzer indique une utilisation excessive d'objets lorsqu'un temps trop élevé est consacré à la récupération de place. Détection d'une utilisation excessive d'objets
L'attribut used memory de Resource Analyzer indique les fuites de mémoire et une exception Java Out of Memory (Mémoire insuffisante) est signalée. Détection des fuites de mémoire
Le débit, le temps de réponse et l'évolutivité ne sont pas acceptables. Si l'application le permet, exploitez la mise en mémoire cache pour le fragment dynamique

Bases de l'optimisation des réglages

De nombreuses améliorations peuvent être apportées à WebSphere Application Server à l'aide des procédures d'optimisation des réglages. Ce guide d'optimisation des réglages explique comment optimiser les travaux et contient des recommandations générales et une description des méthodes spécifiques d'optimisation des réglages. Vous trouverez également des astuces et des conseils relatifs aux différents facteurs et variables pouvant améliorer les performances.

Utilisez le guide avec les exemples et les ressources pour accroître vos connaissances sur l'optimisation des réglages. L'optimisation des performances est un domaine en constante évolution, car elle s'appuie sur l'expérience acquise au fil du temps. Les résultats peuvent être différents de ceux indiqués dans ce guide.

Quels sont les points ayant une incidence sur l'optimisation des réglages ?

Les composants ci-dessous peuvent avoir une incidence sur les performances de WebSphere Application Server : Tous les composants mentionnés ci-dessus ont leurs propres options de réglage et sont détaillés dans la section Paramètres de performances individuelles de ce document.

Pour une grande diffusion, certaines procédures sont décrites pour la définition des paramètres dans d'autres produits. Ces produits pouvant être sujets à modification, les procédures doivent être considérées uniquement comme des suggestions.

Types de réglage

Il existe deux types de réglage possibles : l'optimisation des performances de l'application et l'optimisation des paramètres.

Bien que l'optimisation des réglages de l'application offre parfois les améliorations les plus importantes, l'objectif de ce document est de présenter les paramètres de performances individuelles, ainsi que la synergie entre ces différents paramètres de performance.

Le livre blanc intitulé WebSphere Application Server Development Best Practices for Performance and Scalability traite de l'optimisation des réglages de performance et décrit les meilleures méthodes de développement pour les applications contenant des servlets, des fichiers JSP (Java Server Pages), des connexions JDBC (Java Database Connectivity) et pour les applications d'entreprise contenant des composants de beans enterprise.

Optimisation des paramètres

L'optimisation des paramètres est l'art de modifier les paramètres WebSphere Application Server afin d'améliorer les performances. Les valeurs suggérées dans ce document sont des indications générales. Les paramètres optimaux de votre environnement peuvent varier considérablement. De plus, n'oubliez pas qu'après l'optimisation d'un goulet d'étranglement, vous pouvez en trouver un autre, non associé. Si tel est le cas, il se peut que vous ne ressentiez l'amélioration des performances qu'une fois les deux goulets d'étranglement supprimés.

Cette section présente deux types de paramètres de réglage :
Optimisation des paramètres avec un impact élevé
Ces paramètres permettent des résultats de performances élevées. Il s'agit d'un sous-ensemble de tous les autres paramètres dont l'incidence sur les performances est élevée. Comme ils dépendent de l'application, la définition appropriée des paramètres pour l'application et l'environnement peut différer.

Le tableau ci-après répertorie les différents paramètres permettant l'optimisation des réglages en vue de l'amélioration des performances.

Liste de vérification des performances d'assemblage d'applications
Ajustement des files d'attente système de WebSphere Application Server
Transmission par valeur et Transmission par référence(NoLocalCopies)
Réglage des paramètres TCP sous Solaris
Optimisation des réglages de la mémoire Java
Réglage de MaxRequestsPerChild: sous Linux avec IBM HTTP Server
Réglage de la taille du pool de connexions de la source de données WebSphere
Réglage de la taille de la cache des instructions préparées
Intervalle de rechargement de la configuration du serveur
Réglage de la taille de la cache des instructions préparées
Utilisation de la mémoire cache avec une session persistante
Optimisation des paramètres pour éviter les incidents

Les paramètres ci-après permettent d'éviter des problèmes fonctionnels.

Paramètre ListenBackLog : S'applique si Windows NT/2000 s'exécute avec IIS en cas de charge client importante.
Type de transport : Utilisez les sockets INET sous Solaris (valeur par défaut pour WebSphere Application Server)
Nombre de connexions à DB2 : Si vous établissez un nombre de connexions supérieur à celui défini par défaut par DB2.
L'option Admission d'allocation d'unité d'exécution au delà du maximum a été sélectionnée et le système est surchargé car le nombre d'unités d'exécution attribué est trop élevé.
Utilisation des sockets TCP pour DB2 sous Linux : pour les bases de données locales
Taille du pool de connexions de la source de données WebSphere : Vérifiez que vous disposez d'assez de connexions pour gérer les connexions supplémentaires requises par le traitement des transactions avec des EJB entity et pour éviter les blocages.

Ajustement des files d'attente dans WebSphere Application Server

WebSphere Application Server comporte une série de composants étroitement liés les uns aux autres qui doivent être soigneusement réglés pour prendre en charge les besoins propres de votre application d'e-business de bout en bout. Les réglages décrits ci-après permettent d'obtenir le meilleur débit tout en préservant la stabilité globale du système.

Réseau de mise en file d'attente

WebSphere Application Server s'appuie sur un réseau de files d'attente interconnectées qui représentent les divers composants de la plateforme de service d'applications. Ces files d'attente comprennent le réseau de communication, le serveur Web, le conteneur d'EJB, la source de données et, éventuellement, un gestionnaire de connexions vers un système dorsal personnalisé. Chacune de ces ressources représente une file dans laquelle sont placées les demandes en attente d'utilisation de cette ressource.

Les files d'attente de WebSphere sont des ressources qui dépendent de la charge. Le temps moyen de service d'une demande dépend du nombre de clients concurrents.

Files d'attente fermées et files d'attente ouvertes

La plupart des files d'attente qui constituent le réseau de mise en file d'attente sont des files d'attente fermées. Par opposition à une file d'attente ouverte, une file d'attente fermée impose une limite au nombre de demandes qui peuvent coexister dans la file.

Une file fermée permet une gestion étroite des ressources du système. Par exemple, dans les propriétés du conteneur Web, le paramètre Nombre maximal de connexions détermine la taille de la file d'attente associée au conteneur Web. Si les servlets s'exécutant dans conteneur Web créent en moyenne 10 Mo d'objets au cours de chaque demande, l'attribution de la valeur 100 au paramètre max connections (Nombre maximal de connexions) limite à 1 Go la quantité de mémoire consommée par le conteneur Web.

Dans une file d'attente fermée, une demande peut prendre l'un des deux états suivants : active ou en attente. Une demande active est soit en train d'effectuer un travail, soit en attente d'une réponse d'une file d'attente en aval. Par exemple, au niveau du serveur Web, une demande active peut soit effectuer une opération telle que la récupération d'un contenu HTML statique, soit attendre qu'une demande soit satisfaite au niveau du conteneur Web. On dit d'une demande qu'elle est en attente lorsqu'elle attend de devenir active. Elle reste à l'état en attente jusqu'à ce que l'une des demandes actives quitte la file.

Tous les serveurs Web reconnus par WebSphere sont des files d'attente fermées, comme le sont les sources de données WebSphere. Les conteneurs Web peuvent être configurés comme files d'attente ouvertes ou fermées. En règle générale, il est préférable qu'ils soient des files d'attente fermées. Les conteneurs d'EJB sont des files d'attente ouvertes. Si aucune unité d'exécution n'est disponible dans le pool, il en est créé une nouvelle pour la durée de la demande.

Si des beans enterprise sont appelés par des servlets, le conteneur Web limite le nombre total de demandes émises simultanément à destination du conteneur d'EJB, car ce conteneur possède aussi une limite (il s'agit d'une file fermée). Cependant, cette protection n'est efficace que dans la mesure où des beans enterprise sont appelés à partir de l'unité d'exécution du servlet. Rien ne vous empêche de créer des unités d'exécution et d'envoyer de nombreuses demandes au conteneur d'EJB. C'est pourquoi il vaut mieux éviter que le servlet crée ses propres unités d'exécution.

Paramètres de file d'attente de WebSphere Application Server

La partie ci-après présente les différentes définitions de file d'attente.

Détermination des réglages

La section suivante décrit une méthodologie de configuration des files d'attente de WebSphere Application Server. Vous pouvez changer la dynamique du système et par conséquent, ses performances, en déplaçant des ressources (par exemple en transférant le serveur de base de données sur une autre machine) ou en augmentant la puissance des ressources, par exemple en équipant le système de processeurs plus rapides avec plus de mémoire). Par conséquent, adaptez les paramètres de réglage à une configuration spécifique de l'environnement de production.

Mise en file d'attente en amont de WebSphere

La première règle à suivre en matière d'optimisation des réglages est de minimiser le nombre de demandes en attente au niveau des composants de WebSphere Application Server. En général, mieux vaut que les demandes attendent dans le réseau (en amont du serveur Web) que dans WebSphere Application Server. Ainsi, seules les demandes prêtes à être traitées sont autorisées à pénétrer dans le réseau de mise en file d'attente. Pour réaliser cette configuration, il faut que les files d'attente les plus en amont (les plus proches du client) soient légèrement plus grandes et que celles les plus en aval (les plus éloignées du client) soient de plus en plus petites.

Les files d'attente du réseau se réduisent peu à peu à mesure que les demandes progressent vers l'aval. Lorsque 200 clients accèdent au serveur Web, 125 demandes restent en attente au niveau du réseau de communication car le serveur Web est configuré pour accepter jusqu'à 75 clients concurrents. Les 75 demandes doivent ensuite être transmises du serveur Web au conteneur Web, mais 25 d'entre elles restent en attente au niveau du serveur Web, les 50 autres étant prises en charge par le conteneur Web. Les demandes passent ensuite à travers la source de données ; seules 25 d'entre elles parviennent à la destination finale, le serveur de bases de données. Comme à tout moment, un travail en amont attend de pouvoir être pris en charge par un composant, aucun des composants du système ne marque de temps d'arrêt. Les demandes attendent d'être servies sur le réseau, en dehors de WebSphere Application Server. Cela augmente la stabilité car aucun composant n'est surchargé. Dans un cluster WebSphere Application Server, les utilisateurs en attente peuvent également être aiguillés vers d'autres serveurs via un logiciel de routage tel qu'IBM Network Dispatcher.

Traçage d'une courbe de débit

A l'aide d'un scénario de test représentatif de l'application de production (testant, par exemple, toutes les parties de code significatives), ou à l'aide de l'application elle-même, procédez à une série d'expérimentations pour déterminer le point de saturation du système, c'est-à-dire à quel moment ses capacités sont sollicitées au maximum. Vous devez avoir préalablement éliminé la plupart des goulets d'étranglement de l'application. Généralement, l'objectif de ces essais est d'amener les processeurs à leur limite d'utilisation (c'est-à-dire à près de 100 % de leur capacité).

Pour définir la ligne de base de l'expérimentation, commencez par un essai avec de grandes files d'attente. Le nombre de demandes concurrentes dans le système est ainsi maximal. Par exemple, faites un premier essai avec une taille de file d'attente de 100 pour chacun des serveurs rencontrés sur le parcours WebSphere, c'est-à-dire le serveur Web, le conteneur Web et la source de données.

Exécutez ensuite une série d'essais pour tracer une courbe de débit, en augmentant la charge (nombre d'utilisateurs concurrents) après chaque essai. Par exemple, commencez avec un seul utilisateur, puis passez à deux utilisateurs, puis à 5, 10, 25, 50, 100, 150 et 200. Après chaque essai, consignez le débit mesuré (demandes par seconde) et les temps de réponse (secondes par demande).

La courbe de débit résultant de ces essais doit ressembler à la courbe ci-dessous.

Le débit de WebSphere Application Server est fonction du nombre de demandes concurrentes présentes dans l'ensemble du système. Dans la section A, qui est la zone de faible charge, le débit augmente presque linéairement avec le nombre de demandes concurrentes. Cela montre que tant que la charge est modérée, les demandes concurrentes rencontrent très peu d'encombrements au sein des files d'attente système de WebSphere Application Server. A un certain point, les encombrements commencent à se développer. Le débit continue à augmenter, mais avec une pente beaucoup plus faible, jusqu'à ce qu'il atteigne un point de saturation qui représente la valeur de débit maximale. Ce point de saturation est dû à la formation d'un goulet d'étranglement dans le système WebSphere Application Server. Le type de goulot le plus facile à gérer résulte de la saturation des processeurs des machines WebSphere Application Server. En effet, pour y remédier, il suffit d'ajouter d'autres processeurs ou de remplacer les processeurs existants par des modèles plus puissants.

Dans la zone de forte charge ou dans la section B, alors que la charge du client concurrent augmente, le débit reste relativement identique. Toutefois, le temps de réponse augmente proportionnellement à la charge de l'utilisateur. Autrement dit, si le nombre d'utilisateurs est doublé dans la zone de forte charge, le temps de réponse double également. A un certain point, qui marque le début de la section C, la zone de dégradation, l'un des composants du système, approche de la saturation et le débit commence à chuter. Ce point peut être atteint, par exemple, lorsque le nombre de connexions réseau au niveau du serveur Web dépasse les limites de la carte réseau, ou en cas de franchissement des limites du système d'exploitation en termes de descripteurs de fichier.

Si le point de saturation est atteint en poussant l'utilisation des processeurs du système à près de 100 % de leur capacité, passez à l'étape suivante. Si le point de saturation a été atteint sans que les processeurs en soit la cause, il est probable qu'un goulet d'étranglement se soit formé ailleurs et qu'il soit aggravé par l'application. Par exemple, l'application peut créer des objets Java de façon excessive, provoquant des goulets d'étranglement au niveau de la récupération de place dans le processus Java.

Il existe deux façons de gérer des goulets d'étranglement : supprimer le goulet d'étranglement ou le cloner. La meilleure façon de gérer un goulet d'étranglement est de le supprimer. A cet effet, utilisez un "profileur" d'applications Java pour déterminer comment et dans quelles proportions l'application utilise les objets Java. Vous pouvez utiliser des profileurs tels que Performance Trace Data Visualizer(PTDV), JProbe et Jinsight.

Ajustement des files d'attente

Le nombre d'utilisateurs concurrents relevé au point de saturation du débit représente la capacité maximale de l'application en termes de concurrence des accès. Par exemple, si lors des essais précédents, le point de saturation de WebSphere Application Server a été atteint avec 50 utilisateurs concurrents, il est possible que la meilleure combinaison débit/temps de réponse soit obtenue avec 48 utilisateurs. Cette valeur est appelée la limite de concurrence de l'application. Elle représente la valeur à utiliser comme base pour l'ajustement des files d'attente système de WebSphere Application Server. Rappelons que la plupart des demandes d'utilisateur doivent de préférence rester en attente en dehors de WebSphere Application Server, c'est-à-dire au niveau du réseau de communication. Vous devez donc diminuer la taille des files d'attente à mesure que vous progressez vers l'aval. Par exemple, si l'on admet que la limite de concurrence de l'application s'établit à 48, adoptez les valeurs de départ suivantes pour les files d'attente système : 75 pour le serveur Web, 50 pour le conteneur Web et 45 pour la source de données. Effectuez d'autres séries d'essais en augmentant et en réduisant légèrement ces valeurs pour trouver les meilleurs paramètres.

Resource Analyzer peut être utilisé pour déterminer le nombre d'utilisateurs concurrents via le nombre d'unités d'exécution actives simultanément du pool d'unités d'exécution du moteur de servlet.

Lors de l'optimisation des performances, le débit augmente de 10 à 15 % lorsque le nombre maximal de connexions maintenues actives pour le transfert est adapté au nombre maximal d'unités d'exécution de conteneurs Web.

Ajustement des files d'attente en fonction des schémas d'accès

Dans de nombreux cas, seule une fraction des demandes passant à travers une file donnée entre ensuite dans la file en aval. Dans le cas d'un site présentant de nombreuses pages statiques, nombre de demandes sont traitées intégralement par le serveur Web sans jamais être transmises au conteneur Web. Dans ces circonstances, la file d'attente du serveur Web peut donc être nettement plus grande que celle du conteneur Web. Ainsi, dans la section précédente, la taille de la file d'attente du serveur Web a été réglée à 75 au détriment d'une valeur proche de la limite de concurrence de l'application (48). Des ajustements comparables s'imposent lorsque les divers composants de la chaîne WebSphere possèdent des temps d'exécution différents.

Par exemple, dans une application dont 90 % du temps d'exécution est monopolisé dans un servlet complexe, le reste du temps étant consacré à l'exécution d'une courte requête JDBC, en moyenne, seuls 10 % des servlets utilisent simultanément des connexions à la base de données. La file d'attente de connexion à la base de données peut donc être beaucoup plus petite que celle du conteneur Web. Inversement, si une grande part du temps d'exécution d'un servlet est consacré à une requête complexe sur la base de données, il faut envisager d'augmenter la taille des files d'attente tant au niveau du conteneur Web qu'au niveau de la source de données. Surveillez toujours le taux d'utilisation des processeurs et de la mémoire à la fois sur le serveur WebSphere Application Server et sur le serveur de bases de données afin d'éviter que le processeur ou la mémoire ne saturent.

Mise en file d'attente et beans enterprise

Les appels de méthodes vers les beans enterprise ne sont mis en file d'attente qui si le client qui émet l'appel est à distance. Exemple : si le client EJB est en cours d'exécution dans une machine virtuelle Java distincte (c'est-à-dire un autre espace adresse) de celle où s'exécute le bean enterprise. En revanche, si le client d'EJB (un servlet ou un autre bean enterprise) s'exécute dans la même JVM, la méthode appelée s'exécute dans la même unité d'exécution que le client et l'appel n'est pas mis en file d'attente.

Les beans enterprise distants communiquent à l'aide du protocole RMI/IIOP. Les appels de méthodes adressés via ce protocole sont traités par un ORB du côté serveur. Le pool d'unités d'exécution agit comme file d'attente pour les demandes entrantes. Cependant, si une demande de méthode éloignée est émise et qu'aucune unité d'exécution n'est disponible dans le pool, une nouvelle unité d'exécution est créée. Une fois la demande de méthode terminée, l'unité d'exécution est supprimée. Ainsi, lorsque l'ORB est utilisé pour traiter les demandes de méthode éloignées, le conteneur d'EJB est une file d'attente ouverte car l'utilisation des unités d'exécution n'est pas liée. L'illustration suivante décrit les deux options de mises en file d'attente de beans enterprise.

Lors de la configuration du pool d'unités d'exécution, il est important de connaître les schémas d'appel du client d'EJB. Si un servlet effectue un petit nombre d'appels aux beans enterprise éloignés et que chaque appel de méthode est relativement rapide, envisagez de définir le nombre d'unités d'exécution du pool ORB inférieur à la valeur de la taille du pool d'unités d'exécution du conteneur Web.

Resource Analyzer indique un paramètre appelé Taux d'utilisation maximale qui détermine la durée pendant laquelle les unités d'exécution configurées sont utilisées. Si cette valeur comporte toujours deux chiffres, alors le composant ORB peut se transformer en goulet d'étranglement et le nombre d'unités d'exécution doit être augmenté.

Le degré selon lequel vous devez augmenter la valeur du pool d'unités d'exécution ORB est fonction du nombre de servlets simultanés (autrement dit, des clients) appelant les beans enterprise et de la durée de chaque appel de méthode. Si les appels de méthode sont plus longs, envisagez de modifier la taille du pool d'unités d'exécution de l'ORB de telle sorte qu'elle soit égale à la taille du conteneur Web, car il y a peu d'imbrication des appels de méthode éloignés. Si le servlet n'effectue que des appels de courte durée ou rapide vers l'ORB, le pool d'unités d'exécution de l'ORB peut être de petite taille. Potentiellement, plusieurs servlets peuvent réutiliser la même unité d'exécution ORB. Dans ce cas, le pool d'unités d'exécution ORB peut être de petite taille, voire même la moitié de la taille du pool d'unités d'exécution définie pour le conteneur Web. Si l'application passe beaucoup de temps dans l'ORB, configurez une relation plus régulière entre le conteneur Web et l'ORB.

Mise en file d'attente et utilisation de clusters

La possibilité de cloner les serveurs d'applications peut être très utile à la configuration d'environnements de production à fort potentiel d'évolution. Cette remarque est particulièrement vraie lorsque l'application présente des goulets d'étranglement qui empêchent d'exploiter toute la puissance des serveurs multiprocesseurs (SMP). Au moment de choisir la taille des files d'attente système de WebSphere Application Server dans une configuration en cluster, n'oubliez pas que l'ajout d'un serveur à un cluster double la charge du serveur en aval.

Deux clones de conteneur Web sont insérés entre un serveur Web et une source de données. Supposons que le serveur Web, les deux clones du moteur de servlet et la source de données (mais pas la base de données) s'exécutent tous sur un même serveur physique SMP. Compte tenu de ces éléments, les points suivants sont à prendre en considération :

Optimisation des réglages Secure Socket Layer

Vous trouverez ci-dessous deux types de performances SSL (Secure Socket Layer) :

Etablissement de la connexion et chiffrement/déchiffrement en bloc - Présentation

Un établissement de liaison SSL survient lorsqu'une connexion SSL est établie. Une fois la connexion établie, SSL procède à un chiffrement et à un déchiffrement en bloc pour chaque opération de lecture-écriture. Le coût de performances d'un établissement de connexion SSL est plus élevé que celui d'un chiffrement et d'un déchiffrement en bloc.

Amélioration des performances SSL

Afin d'améliorer les performances SSL, le nombre de connexions SSL individuelles et le nombre d'établissements de connexions doivent être réduits.

La réduction du nombre de connexions augmente les performances liées aux communications sécurisées via les connexions SSL, ainsi que les communications non sécurisées via des connexions TCP simples. L'une des façons de réduire le nombre de connexions SSL individuelles est d'utiliser un navigateur prenant en charge HTTP 1.1. La réduction du nombre de connexions SSL individuelles peut être impossible pour certains utilisateurs s'ils ne peuvent pas mettre à niveau HTTP 1.1.

Il est plus courant de réduire le nombre de connexions (à la fois TCP et SSL) entre deux composants WebSphere Application Server. Les instructions suivantes permettent de garantir que le transfert HTTP du serveur d'applications est configuré de sorte que le plug-in du serveur Web n'ouvre pas plusieurs fois de nouvelles connexions au serveur d'applications :

Taille de la cache des instructions préparées

Autres paramètres JDBC
En plus de la définition de la taille de la cache des instructions préparées, vous pouvez définir d'autres propriétés spécifiques aux pilotes JDBC. Par exemple, si vous utilisez une base de données Oracle, vous pouvez augmenter le nombre de lignes à lire lors de l'extraction d'ensembles de résultats en insérant l'instruction suivante :
name="defaultRowPrefetch", value="25"
Entrez ces types de propriétés personnalisées dans l'onglet Généralités pour la base de données.

DB2

DB2 possède de nombreux paramètres pouvant être configurés afin d'optimiser les performances de la base de données. Pour obtenir plus d'informations sur l'optimisation de DB2, reportez-vous au manuel DB2 UDB Administration Guide: Performance.
Utilisation de sockets TCP pour DB2 sous Linux
Paramètre DB2 MaxAppls
DB2 MaxAgents
Pool de mémoire tampon DB2
Niveau d'optimisation des requêtes DB2
DB2 reorgchk
DB2 MinCommit

Gestion des sessions

Pour obtenir plus d'informations sur la définition des paramètres de gestion de session, reportez-vous à l'article 4.4.1.1 de l'InfoCenter Modèle et environnement de programmation de sessions.

Programme d'écoute des messages de WebSphere Application Server Enterprise Extensions

WebSphere Application Server Enterprise Extensions propose une prise en charge d'Extended Messaging Support. La présente section contient des suggestions de réglage pour la fonction JMS Listener qui fait partie d'Extended Messaging Support.

Nombre de sessions maximal

Plusieurs serveurs d'applications à l'écoute dans la même file d'attente

Références supplémentaires

Procédures des outils de performances

Démarrage de l'analyseur de performances de Windows NT/2000

Effectuez les opérations suivantes :
Dans le menu Démarrer, sélectionnez Programmes > Outils d'administration > Analyseur de performances