Optimisation du noyau Linux

Afin que le système puisse supporter une concurrence plus élevée, en plus de devoir installer l'extension event, l'optimisation du noyau Linux est également cruciale. Chaque optimisation est très très importante, merci de vous assurer de les compléter une par une.

Explication des paramètres :

max-file : représente le nombre de descripteurs de fichiers pouvant être ouverts au niveau système. Cela concerne l'ensemble de l'OS et non un utilisateur spécifique.

ulimit -n : contrôle le nombre de descripteurs de fichiers pouvant être ouverts au niveau du processus. Cela concerne les descripteurs de fichiers disponibles pour l'utilisateur courant du shell et les processus qu'il a lancés.

Pour vérifier le nombre de descripteurs de fichiers pouvant être ouverts au niveau système : cat /proc/sys/fs/file-max

Ouvrez le fichier /etc/sysctl.conf et ajoutez les paramètres suivants :

# Ce paramètre définit le nombre de TIME_WAIT du système. S'il dépasse la valeur par défaut, il sera immédiatement supprimé.
net.ipv4.tcp_max_tw_buckets = 20000
# Définit la longueur maximale de la file d'attente des connexions en écoute pour chaque port dans le système. C'est un paramètre global.
net.core.somaxconn = 65535
# Pour les requêtes de connexion n'ayant pas encore reçu la confirmation de l'autre partie, le nombre maximal pouvant être conservé dans la file d'attente.
net.ipv4.tcp_max_syn_backlog = 262144
# Lorsque la vitesse de réception des paquets sur chaque interface réseau dépasse la capacité de traitement du noyau, spécifie le nombre maximal de paquets pouvant être envoyés dans la file d'attente.
net.core.netdev_max_backlog = 30000
# Cette option peut provoquer des délais d'attente pour les clients sur un réseau NAT; il est conseillé de mettre la valeur à 0. Linux a retiré la configuration tcp_tw_recycle à partir du noyau 4.12; si une erreur "No such file or directory" apparaît, veuillez l'ignorer.
net.ipv4.tcp_tw_recycle = 0
# Le nombre total de fichiers pouvant être ouverts par tous les processus du système.
fs.file-max = 6815744
# Taille de la table de suivi du pare-feu. Remarque : si le pare-feu n'est pas activé, cela affichera l'erreur : "net.netfilter.nf_conntrack_max" is an unknown key, que vous pouvez ignorer.
net.netfilter.nf_conntrack_max = 2621440
net.ipv4.ip_local_port_range = 10240 65000

Exécutez sysctl -p pour appliquer les changements immédiatement.

Remarque :

Il y a beaucoup d'options que l'on peut configurer dans /etc/sysctl.conf, d'autres options peuvent être définies en fonction des besoins de votre environnement.

Nombre de fichiers ouverts

Configurer le nombre de fichiers ouverts par le système pour résoudre le problème too many open files sous une forte concurrence. Cette option influence directement le nombre de connexions clients qu'un processus unique peut gérer.

Soft open files est un paramètre du système Linux qui influence le nombre maximal de descripteurs de fichiers qu'un processus unique peut ouvrir. Ce chiffre affecte les applications à connexion longue comme le chat, où un processus unique peut maintenir un certain nombre de connexions utilisateurs. Exécuter ulimit -n permet de voir cette valeur. Si vous voyez 1024, cela signifie qu'un processus unique ne peut maintenir au maximum que 1024 connexions (voire moins car d'autres descripteurs de fichiers pourraient être ouverts). Si quatre processus sont lancés pour maintenir des connexions utilisateur, le nombre total de connexions pouvant être maintenues par l'application ne dépassera pas 4*1024, ce qui signifie qu'au maximum, 4x1024 utilisateurs peuvent être en ligne. Vous pouvez augmenter ce paramètre pour permettre à votre service de maintenir plus de connexions TCP.

Trois méthodes pour modifier le Soft open files :

Première méthode : Exécutez directement ulimit -HSn 102400 dans le terminal, puis redémarrez workerman.

Ceci n'est valable que pour le terminal actuel ; lorsque vous quittez, le nombre de fichiers ouverts revient à la valeur par défaut.

Deuxième méthode : Ajoutez la ligne ulimit -HSn 102400 à la fin du fichier /etc/profile, de sorte qu'à chaque connexion au terminal, cette commande soit automatiquement exécutée. Un redémarrage de workerman sera nécessaire après modification.

Troisième méthode : Pour que la modification du nombre de fichiers ouverts soit permanente, vous devez modifier le fichier de configuration : /etc/security/limits.conf. Ajoutez ce qui suit dans ce fichier :

* soft nofile 1024000
* hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000

Cette méthode nécessite un redémarrage du serveur pour prendre effet.