Trois services, huit gigaoctets : dimensionner un serveur partagé
Une machine, trois services : une base de données, un serveur d'applications, un proxy. Chacun s'installe avec des réglages par défaut raisonnables. Le problème est que chacun de ces réglages suppose être seul sur la machine.
Additionnés, ils promettent davantage de mémoire qu'il n'y en a. Le système tient tant que la charge reste faible, puis le noyau arbitre — en supprimant un processus, celui qu'il veut, au moment où la charge est déjà forte.
Poser l'addition
Sur une machine de 8 Go, un partage viable ressemble à ceci :
| Poste | Mémoire |
|---|---|
| Base de données, cache partagé | 2,0 Go |
| Base de données, sessions clientes | ~0,5 Go |
| Serveur d'applications, plafond dur | 3,5 Go |
| Proxy | ~0,1 Go |
| Système | ~0,5 Go |
| Engagé | ~6,6 Go |
| Reste au cache du noyau | ~1,4 Go |
Le point important n'est pas le détail des chiffres, qui dépendent du contexte : c'est que l'addition ait été faite, et qu'il reste délibérément de la marge au cache du système de fichiers.
Les deux postes qui débordent
Deux consommations échappent à l'intuition.
La mémoire hors tas du serveur d'applications. Régler la taille du tas ne borne pas la consommation du processus : les piles de fils d'exécution, les tampons réseau et les zones internes s'y ajoutent. Le plafond doit être posé au niveau du service, pas seulement à celui de l'application.
Le nombre de connexions à la base. Chaque connexion active peut mobiliser plusieurs fois la mémoire de tri allouée par opération. Un nombre maximal de connexions laissé à sa valeur par défaut multiplie ce coût par un nombre que personne n'a choisi.
Vérifier plutôt que supposer
Une fois les valeurs posées, elles se contrôlent sur la machine : le plafond effectif appliqué au service, et les réglages réellement chargés par la base — pas ceux écrits dans le fichier de configuration, qui peut avoir été ignoré.
L'écart entre les deux est fréquent, et c'est toujours le réglage effectif qui décide.
Ce qu'il faut en retenir
Changer une valeur de dimensionnement sans refaire l'addition complète est la façon la plus simple de rendre une machine instable. Le calcul mérite d'être écrit à côté de la configuration : c'est ce qui permet, six mois plus tard, de savoir ce qu'on peut modifier sans tout déséquilibrer.