Guide d'administration du système Solaris Resource Manager 1.3

Gestion des serveurs Web

Solaris Resource Manager permet de gérer les ressources de serveurs Web par le contrôle de la quantité d'UC et de mémoire virtuelle. Trois topologies de base sont utilisées sur les systèmes qui hébergent des serveurs Web.

Gestion des ressources d'un serveur Web regroupé

Il est possible de gérer un serveur Web en contrôlant la quantité de ressources qu'il peut utiliser. Cet aspect est fort utile dans un environnement où un serveur Web est regroupé avec d'autres travaux. Il s'agit du type de gestion des ressources le plus élémentaire. Il permet d'éviter que d'autres travaux nuisent aux performances du serveur Web et vice versa. Par exemple, si un script CGI du serveur Web s'emballe et manque de mémoire, le système n'aura pas de problème de zone de swap : seul le serveur Web sera touché.

Dans cet exemple, 20 parts sont attribuées à un serveur Web. Ainsi, celui-ci disposera au moins de 20 % des ressources du processeur, si la base de données impose de lourdes exigences au processeur.

Le diagramme illustre une situation dans laquelle le serveur Web est assuré de recevoir son pourcentage des ressources de processeur même si une autre application impose une charge excessive à l'UC.

Pour un autre exemple de serveur Web, consultez la rubrique Mise en place d'un processus Web frontal.

Gestion plus précise des ressources d'un serveur Web individuel

Souvent, on doit faire appel à la gestion des ressources pour contrôler le comportement d'un serveur Web individuel. Par exemple, de nombreux utilisateurs peuvent se partager un serveur Web et chacun d'eux peut lancer son propre programme cgi-bin.

Ainsi, une erreur dans un seul programme cgi-bin peut ralentir tout le serveur Web ou, dans le cas d'un manque de mémoire, le serveur Web peut même tomber en panne. Pour prévenir de telles situations, vous pouvez définir des limites par processus.

Le diagramme illustre l'utilisation de limites par processus au sein d'un même serveur Web.

Gestion des ressources de plusieurs serveurs Web virtuels

Souvent, un seul ordinateur est utilisé pour héberger plusieurs serveurs Web virtuels de manière regroupée. Dans une telle circonstance, plusieurs instances du processus du serveur Web httpd sont présentes et un profit accru peut être tiré du contrôle des ressources par l'entremise de Solaris Resource Manager.

Chaque serveur Web peut être exécuté à titre d'UID UNIX différent en définissant un paramètre dans le fichier de configuration du serveur Web. Cela permet de faire correspondre chaque serveur Web à un noeud limite différent dans la hiérarchie de Solaris Resource Manager.

Par exemple, le Sun WebServerTM comporte les paramètres suivants dans le fichier de configuration /etc/http/httpd.conf :


# Server parameters
 server  {
   server_root                   "/var/http/"
   server_user                   "webserver1"
   mime_file                     "/etc/http/mime.types"
   mime_default_type             text/nlain
   acl_enable                    "yes"
   acl_file                      "/etc/http/access.acl"
   acl_delegate_depth            3
   cache_enable                  "yes"
   cache_small_file_cache_size   8                       # megabytes
   cache_large_file_cache_size   256                     # megabytes
   cache_max_file_size           1                       # megabytes
   cache_verification_time       10                      # seconds
   comment                       "Sun WebServer Default Configuration"

   # The following are the server wide aliases

   map   /cgi-bin/               /var/http/cgi-bin/              cgi
   map   /sws-icons/             /var/http/demo/sws-icons/
   map   /admin/                 /usr/http/admin/

 # To enable viewing of server stats via command line,
 # uncomment the following line
   map   /sws-stats              dummy                           stats
 }

En configurant chaque serveur Web en vue d'une exécution selon un UID UNIX distinct, vous pouvez définir des limites différentes pour chaque serveur Web. Cet aspect s'avère particulièrement utile pour contrôler et comptabiliser la consommation des ressources sur un ordinateur qui héberge plusieurs serveurs Web.

Dans ce cas, vous pouvez vous servir de plusieurs contrôles et limites des ressources de Solaris Resource Manager ou de leur totalité :

Parts [cpu.shares]

cpu.shares permet d'allouer de façon proportionnelle les ressources à différents serveurs Web.

Quantité limite de mémoire [memory.limit]

memory.limit permet de limiter la quantité de mémoire virtuelle dont le serveur Web peut se servir. Cela évite qu'un serveur Web provoque la panne d'un autre serveur suite à une erreur d'allocation de mémoire.

Quantité limite de mémoire par processus [memory.plimit]

Limite de la mémoire par processus permet de limiter la quantité de mémoire virtuelle pouvant être utilisée par un processus cgi-bin. Ainsi, un processus cgi-bin ne pourra jamais faire tomber en panne son serveur Web respectif.

Nombre limite de processus [process.limit]

Nombre total maximal de processus autorisés à se relier à un serveur Web peut restreindre le nombre de processus cgi-bin qui s'exécutent simultanément.