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

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. On se sert de trois topologies de base sur les systèmes qui hébergent des serveurs Web.

Gestion des ressources d'un serveur Web regroupé

On peut 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, on attribue 20 parts à un serveur Web. Ainsi, celui-ci disposera au moins de 20 % des ressources du processeur, si la base de données impose des lourdes exigences au processeur.

Graphic

Voir "Mise en place d'un processus Web frontal " pour un autre exemple de serveur Web.

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

Souvent, on doit faire appel à la gestion des ressources pour contrôler le comportement d'un serveur Web individuel. Par exemple, un serveur Web individuel peut être partagé entre plusieurs utilisateurs, chacun avec ses propres programmes 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, on peut définir des limites par processus.

Graphic

Gestion des ressources de plusieurs serveurs Web virtuels

On se sert souvent d'un seul ordinateur pour héberger plusieurs serveurs Web virtuels de manière regroupée. En tel cas, plusieurs instances du processus httpd du serveur Web sont présentes et on peut tirer bien davantage profit du contrôle des ressources par l'entremise de Solaris Resource Manager.

On peut lancer chaque serveur Web à titre d'UID UNIX différente en définissant un paramètre dans le fichier de configuration du serveur Web. Ainsi, on fait 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 une UID UNIX distincte, il est possible de définir des limites différentes pour chaque serveur Web. Cet aspect s'avère particulièrement utile si on souhaite contrôler et comptabiliser la consommation des ressources sur un ordinateur qui héberge plusieurs serveurs Web.

On peut ainsi se servir de plusieurs ou de tous les contrôles et limites des ressources de Solaris Resource Manager :

Shares [cpu.shares]

On peut se servir de cpu.shares pour attribuer proportionnellement les ressources à différents serveurs Web.

Mem limit [memory.limit]

On peut utiliser memory.limit pour limiter la quantité de mémoire virtuelle dont le serveur Web peut se servir. On évite ainsi qu'un serveur Web provoque la panne d'un autre serveur en raison d'une erreur d'attribution de mémoire.

Proc mem limit [memory.plimit]

La limite de mémoire par processus sert à limiter la quantité de mémoire virtuelle qu'un processus cgi-bin peut utiliser. Ainsi, un processus cgi-bin ne pourra jamais faire tomber en panne son serveur Web respectif.

Process limit [process.limit]

En précisant le nombre total maximal de processus qui peuvent se relier à un serveur Web, on peut restreindre le nombre de processus cgi-bin qui s'exécutent simultanément.