Maison  >  Article  >  Opération et maintenance  >  Comment optimiser le noyau à haute concurrence Nginx

Comment optimiser le noyau à haute concurrence Nginx

WBOY
WBOYavant
2023-05-15 17:52:061029parcourir

Qu'est-ce que la haute simultanéité ?

  • Les paramètres par défaut du noyau Linux prennent en compte les scénarios les plus courants et ne conviennent pas aux serveurs Web qui prennent en charge un accès simultané élevé, les paramètres du noyau Linux doivent donc être modifiés, afin que nginx puisse avoir des performances plus élevées ;

  • De nombreuses choses peuvent être faites lors de l'optimisation du noyau. Cependant, nous effectuons généralement des ajustements en fonction des caractéristiques commerciales lorsque nginx est utilisé comme serveur de contenu Web statique, comme proxy inverse ou comme serveur. fournit un serveur de compression, il est prévu que l'ajustement des paramètres du noyau soit différent. Voici une configuration simple des paramètres réseau TCP les plus courants qui permettent à nginx de prendre en charge davantage de requêtes simultanées

  • Celles-ci nécessitent la modification de /etc/sysctl ; conf pour modifier les paramètres du noyau.

Méthode de configuration

Analyse détaillée de la configuration

#Indique le nombre maximum de handles pouvant être ouverts par un seul processus

fs.file-max = 999999

#Le paramètre est défini sur 1, indiquant que le socket dans ; l'état time_wait peut être réutilisé pour un nouveau lien TCP, ce qui est d'une grande importance pour le serveur, car il y a toujours un grand nombre de liens dans l'état time_wait

net.ipv4.tcp_tw_reuse = 1

# Lorsque keepalive démarre, la fréquence d'envoi de TCP keepalive ; messages ; la durée par défaut est de 2 heures, réglez-la sur 10 minutes, ce qui permet de nettoyer les liens invalides plus rapidement.

ner.ipv4.tcp_keepalive_time = 600

#Lorsque le serveur ferme activement le lien, la durée maximale pendant laquelle le socket reste dans l'état fin_wait_2

net.ipv4.tcp_fin_timeout = 30

#Ce paramètre indique le nombre maximum de sockets time_wait autorisé par le système d'exploitation. Si ce nombre est dépassé, le socket time_wait. will Il est effacé immédiatement et un message d'avertissement est imprimé.

#Ce paramètre est par défaut 180000. Trop de sockets time_wait ralentiront le serveur Web.

net.ipv4.tcp_max_tw_buckets = 5000

#Définissez la plage de valeurs du port local pour les liens udp et tcp.

net.ipv4.ip_local_port_range = 1024 65000

# Définit la valeur minimale, la valeur par défaut et la valeur maximale pour que TCP accepte le cache.

net.ipv4.tcp_rmem = 10240 87380 12582912

#Définissez la valeur minimale, la valeur par défaut et la valeur maximale du cache d'envoi TCP.

net.ipv4.tcp_wmem = 10240 87380 12582912

#Lorsque la carte réseau reçoit des paquets de données plus rapidement que la vitesse de traitement du noyau, il y aura une file d'attente pour enregistrer ces paquets de données. Ce paramètre représente la valeur maximale de la file d'attente.

net.core.netdev_max_backlog = 8096

#Indique que le socket du noyau accepte la taille de tampon par défaut.

net.core.rmem_default = 6291456

# indique la taille par défaut du tampon d'envoi du socket du noyau.

net.core.wmem_default = 6291456

# Indique que le socket du noyau accepte une taille de tampon plus grande.

net.core.rmem_max = 12582912

# indique la plus grande taille du tampon d'envoi du socket du noyau.

net.core.wmem_max = 12582912

Remarque : les quatre configurations ci-dessus doivent être prises en compte de manière globale en fonction de la logique métier et des coûts matériels réels

# n'a rien à voir avec les performances ; Utilisé pour résoudre la synchronisation TCP.

net.ipv4.tcp_syncookies = 1

#Ce paramètre indique la longueur maximale de la file d'attente des requêtes de synchronisation acceptée pendant la phase d'établissement de la négociation à trois voies TCP. La valeur par défaut est 1024. Une valeur plus grande peut empêcher Linux de perdre l'initiation du client lorsque nginx est trop occupé pour accepter de nouvelles connexions. .demande de lien.

net.ipv4.tcp_max_syn_backlog = 8192

#Ce paramètre est utilisé pour définir et activer le recyclage rapide timewait.

net.ipv4.tcp_tw_recycle = 1

La valeur par défaut de l'option est 128. Ce paramètre est utilisé pour ajuster le nombre de connexions TCP initiées par le système en même temps. Dans les demandes simultanées élevées, la valeur par défaut peut entraîner l'expiration ou la retransmission du lien. il doit donc être ajusté en fonction du nombre de requêtes simultanées élevées. L'option

net.core.somaxconn=262114

# est utilisée pour définir le nombre maximum de sockets TCP dans le système qui ne sont associés à aucun descripteur de fichier utilisateur. Si ce nombre est dépassé, le lien orphelin sera immédiatement réinitialisé et un message d'avertissement sera émis. Cette limite indique que pour éviter de simples dos***, vous n'avez pas besoin de trop vous fier à cette limite ni même de réduire cette valeur. Dans la plupart des cas, augmentez cette valeur.

net.ipv4.tcp_max_orphans=262114

Pour plus de facilité d'utilisation, vous pouvez le copier directement ci-dessous

net.ipv4.tcp_tw_reuse = 1
fs.file-max = 999999
net.ipv4.tcp_fin_timeout = 30
ner.ipv4.tcp_keepalive_time = 600

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer