Pour répondre à une charge de 5000 requêtes par seconde (QPS), majoritairement issues d'adresses IP fixes, il est efficace d'utiliser le mécanisme keep-alive pour réutiliser les connexions TCP. Le système d'exploitation utilisé est CentOS 6.
Ajustement des paramètres du noyau Linux
Les paramètres suivants doivent être ajoutés ou modifiés dans le fichier /etc/sysctl.conf, puis appliqués avec la commande sysctl -p pour une prise en effet immédiate.
net.ipv4.tcp_syncookies = 1
net.core.somaxconn = 2048
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_keepalive_time = 900
net.ipv4.tcp_fin_timeout = 15
net.ipv4.ip_local_port_range = 10240 65535
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_max_orphans = 131072
Ces modifications visent à prévenir les attaques par déni de service (DoS), à gérer plus efficacement les connexions en état TIME-WAIT, et à élargir les plages de ports disponibles. D'autres paramètres peuvent être laissés par défaut ou consultés dans la documentation officielle de Nginx pour des optimisations avancées.
Configuration de Nginx pour une haute performance
La section principale du fichier de configuration Nginx doit être ajustée comme suit :
worker_processes 8;
worker_rlimit_nofile 65536;
events {
use epoll;
worker_connections 10240;
}
keepalive_timeout 15;
Le nombre de processus workers est défini en fonction des cœurs CPU disponibles. Le modèle d'E/S epoll est recommandé pour sa performance. La valeur de keepalive_timeout est réduite pour les scénarios de connexions courtes.
Pour la section upstream, qui gère les connexions vers les serveurs backend (Tomcat), ajoutez :
keepalive 128;
proxy_http_version 1.1;
proxy_set_header Connection "";
Cela active le keep-alive entre Nginx et Tomcat en utilisant la version HTTP/1.1 et en effaçant l'en-tête Connection pour permettre la réutilisation des connexions. La valeur keepalive définit le nombre de connexions simultanées maintenues.
Réglages de Tomcat pour gérer la charge
Dans le fichier de configuration du connecteur Tomcat, les paramètres clés à ajuster sont :
maxThreads="300"
minSpareThreads="50"
connectionTimeout="20000"
keepAliveTimeout="15000"
Le paramètre maxThreads est limité pour éviter une surcharge due au basculement de threads, qui se manifsete par un pourcentage élevé de temps système (sy%) dans les outils de surveillance. Le temps d'attente pour les connexions keep-alive est fixé à 15 secondes pour optimiser les ressources.