Maison >Opération et maintenance >exploitation et maintenance Linux >Comment optimiser les paramètres du noyau Linux
En tant que serveur WEB performant, il ne suffit pas d'ajuster les paramètres de Nginx lui-même, car le service Nginx s'appuie sur un système d'exploitation performant.
Voici plusieurs méthodes courantes d'optimisation des paramètres du noyau Linux.
net.ipv4.tcp_max_tw_buckets
Pour les connexions TCP, l'état passe à timewait après la communication entre le serveur et le client. Si un serveur est très occupé et a un nombre particulièrement important de connexions, alors le nombre de. timewaits est que cela deviendra de plus en plus gros.
Après tout, cela occupera également une certaine quantité de ressources, il devrait donc y avoir une valeur maximale. Lorsque cette valeur est dépassée, le système supprimera la première connexion, afin qu'elle soit toujours maintenue à un ordre de grandeur.
Cette valeur est déterminée par le paramètre net.ipv4.tcp_max_tw_buckets.
Système CentOS7, vous pouvez utiliser sysctl -a |grep tw_buckets pour afficher sa valeur. La valeur par défaut est 32768.
Vous pouvez la réduire de manière appropriée, par exemple en l'ajustant à 8000. Après tout, trop de connexions dans cet état consommeront des ressources.
Mais ne l'ajustez pas à des dizaines ou des centaines, car la connexion TCP dans cet état est également utile
Si le même client communique à nouveau avec le serveur, il n'est pas nécessaire d'établir à nouveau une nouvelle connexion, utilisez cet ancien canal, gain de temps et d'efforts.
net.ipv4.tcp_tw_recycle = 1
La fonction de ce paramètre est de recycler rapidement les connexions en état d'attente. Bien qu'il soit mentionné ci-dessus que le système supprimera automatiquement les connexions en état d'attente, ne serait-il pas préférable que ces connexions soient réutilisées.
Donc, définir ce paramètre sur 1 peut permettre aux connexions en état d'attente d'être rapidement recyclées. Il doit être utilisé en conjonction avec les paramètres suivants.
net.ipv4.tcp_tw_reuse = 1
Ce paramètre est défini sur 1 pour réutiliser la connexion en état d'attente pour une nouvelle connexion TCP. Il doit être utilisé en conjonction avec les paramètres ci-dessus.
net.ipv4.tcp_syncookies = 1
Dans la négociation à trois voies TCP, le client initie une demande de synchronisation au serveur Une fois que le serveur l'a reçue, il lancera également une demande de synchronisation au serveur. client avec confirmation d'accusé de réception.
Si le client se déconnecte directement du serveur après l'envoi de la demande et n'accepte pas la demande initiée par le serveur, le serveur réessayera plusieurs fois
Ce processus de nouvelle tentative durera un certain temps (généralement plus long). plus de 30 s). Lorsque le nombre de connexions dans cet état est très important, le serveur consommera beaucoup de ressources, provoquant une paralysie.
Les connexions normales ne peuvent pas entrer. Ce comportement malveillant de semi-connexion est en fait appelé une attaque par inondation de synchronisation.
Réglez sur 1 pour activer les cookies SYN, qui peuvent éviter l'attaque par inondation de synchronisation mentionnée ci-dessus.
Après avoir activé ce paramètre, une fois que le serveur a reçu l'accusé de réception du client, il demandera au client de répondre avec un numéro de série dans un court laps de temps avant d'envoyer ack+syn au client
Si le client ne peut pas fournir le numéro de série ou le numéro de série. Le numéro de série fourni est incorrect, le client sera considéré comme illégal, donc ack+syn ne sera pas envoyé au client et il n'est pas nécessaire de réessayer.
net.ipv4.tcp_max_syn_backlog
Ce paramètre définit le nombre maximum de connexions TCP semi-connectées que le système peut accepter. Le client envoie un paquet syn au serveur. Une fois que le serveur l'a reçu, il l'enregistrera. Ce paramètre détermine le nombre maximum de ces connexions pouvant être enregistrées. Dans CentOS7, la valeur par défaut est 256. Lorsqu'il y a une attaque par inondation de synchronisation, si cette valeur est trop petite, cela fera facilement planter le serveur
En fait, le serveur ne consomme pas trop de ressources (cpu, mémoire, etc. .) à ce moment-là, vous pouvez donc l'augmenter de manière appropriée, par exemple, l'ajuster à 30 000.
net.ipv4.tcp_syn_retries
net.ipv4.tcp_synack_retries
net.ipv4.ip_local_port_range
Lorsque le client établit une connexion avec le serveur, par exemple en accédant au port 80 du serveur, le client ouvre un port de manière aléatoire et initie une connexion avec le serveur
Ce paramètre définit la plage aléatoire. ports. La valeur par défaut est 32768 61000 et il est recommandé de l'ajuster à 1025 61000.
net.ipv4.tcp_fin_timeout
Parmi les états de connexion TCP, l'un sur le client est l'état FIN-WAIT-2, qui est l'état avant que l'état ne passe à timewait.
Ce paramètre définit le délai d'expiration de l'état de connexion qui n'appartient à aucun processus. La valeur par défaut est 60 et il est recommandé de l'ajuster à 6.
net.ipv4.tcp_keepalive_time
L'un des états de connexion TCP est l'état établi. Ce n'est que dans cet état que le client et le serveur peuvent communiquer. Dans des circonstances normales, lorsque la communication est terminée,
le client ou le serveur demandera à l'autre partie de fermer la connexion, et le statut passera à timewait. Si le client ne le dit pas au serveur,
et le serveur ne le dit pas. le client à fermer (par exemple, le côté client est déconnecté), ce paramètre est nécessaire pour déterminer.
Par exemple, le client a été déconnecté, mais l'état de la connexion sur le serveur est toujours établi. Afin de confirmer si le client est déconnecté, le serveur doit envoyer un paquet de détection de temps en temps pour confirmer et vérifier auprès du client. l'autre partie. Est-ce en ligne ? Ce temps est déterminé par ce paramètre. Sa valeur par défaut est de 7 200 secondes et il est recommandé de la définir sur 30 secondes.
net.ipv4.tcp_keepalive_intvl
. À ce stade, le serveur ne peut pas déterminer que l'autre partie n'est pas en ligne, mais doit essayer plusieurs fois. Ce paramètre définit le temps nécessaire pour renvoyer la sonde, c'est-à-dire le temps nécessaire pour relancer la sonde après avoir découvert pour la première fois un problème avec l'autre partie.
La valeur par défaut est de 75 secondes, qui peut être modifiée en 3 secondes.
net.ipv4.tcp_keepalive_probes
Ce paramètre définit le nombre de paquets pour lancer la détection. La valeur par défaut est 9 et il est recommandé de la définir sur 2.
Paramètres et exemples
Pour ajuster les paramètres du noyau sous Linux, vous pouvez directement éditer le fichier de configuration /etc/sysctl.conf, puis exécuter la commande sysctl -p pour prendre effet
Combiné à chaque paramètre du noyau analysé ci-dessus, l'exemple est le suivant
6 net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_max_tw_buckets = 8000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 30000 net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_synack_retries = 2 net.ipv4.ip_local_port_range = 1025 61000 net.ipv4.tcp_keepalive_intvl = 3 net.ipv4.tcp_keepalive_probes = 2
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!