Configuration des hachages
Pour traiter rapidement des ensembles de données statiques tels que les noms de serveur, les valeurs des directives map, les types MIME, les noms des chaînes d'entête de requête, le nginx utilise des tables de hachage. Au démarrage et à chaque reconfiguration, nginx sélectionne les tailles minimales possibles des tables de hachage de telle sorte que la taille du compartiment qui stocke les clés avec des valeurs de hachage identiques ne dépasse pas le paramètre configuré (taille du compartiment de hachage). La taille d'une table est exprimée en compartiments. L'ajustement est poursuivi jusqu'à ce que la taille de la table dépasse le paramètre de taille maximale du hachage. La plupart des hachages ont les directives correspondantes permettant de modifier ces paramètres, par exemple, pour le hachage des noms de serveur, il s'agit de server_names_hash_max_size et server_names_hash_bucket_size.
Le paramètre de taille du compartiment de hachage est aligné sur la taille étant un multiple de la taille de la ligne de cache du processeur. Cela accélère la recherche de clef dans un hachage sur les processeurs modernes en réduisant le nombre d'accès à la mémoire. Si la taille du compartiment de hachage est égale à la taille de la ligne de cache d'un processeur, le nombre d'accès à la mémoire pendant la recherche de clef sera de deux dans le pire des cas : le premier pour calculer l'adresse du compartiment, et le second pendant la recherche de clé à l'intérieur du compartiment. Par conséquent, si nginx émet le message demandant d'augmenter la taille maximale du hachage ou la taille du compartiment de hachage, le premier paramètre doit d'abord être augmenté.