Maison > Opération et maintenance > Nginx > le corps du texte

Comment mettre à niveau en douceur l'exploitation et la maintenance de Nginx

王林
Libérer: 2023-05-15 17:34:06
avant
1363 Les gens l'ont consulté

Vous pouvez remplacer l'ancien exécutable nginx par le nouveau sans interrompre le service - les nouvelles requêtes ne seront pas perdues (lors de la mise à niveau vers une nouvelle version ou de l'ajout/suppression de modules serveur). (Apprentissage recommandé : fonctionnement et maintenance de nginx)

Tout d'abord, utilisez le nouveau programme exécutable pour remplacer l'ancien (il est préférable de faire une sauvegarde), puis envoyez le signal USR2 (kill-USR2pid) au processus principal.

Le processus principal renommera son fichier .pid en .oldbin (par exemple : /usr/local/nginx/logs/nginx.pid.oldbin), puis exécutera le nouveau programme exécutable et démarrera le nouveau processus principal et le nouveau travail en séquence. Processus :

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3313433126nobody0.01368kqreadnginx:workerprocess(nginx)

​3313533126nobody0.01380kqreadnginx:workerprocess(nginx)

​3313633126nobody0.01368kqreadnginx:workerprocess(nginx)

​3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

À ce stade, deux instances nginx s'exécuteront en même temps et traiteront les demandes entrantes ensemble. Pour supprimer progressivement l'ancienne instance, vous devez envoyer le signal WINCH à l'ancien processus maître, puis ses processus de travail commenceront à s'arrêter progressivement :

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

3313533126personne0,01380kqreadnginx:le processus de travail s'arrête (nginx)

​3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

Après un certain temps, l'ancien processus de travail traite toutes les requêtes connectées puis se termine, ne laissant que le nouveau processus de travail pour gérer les requêtes entrantes :

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

A ce stade, comme l'ancien serveur n'a pas encore fermé le socket sur lequel il écoute, vous pouvez toujours restaurer l'ancien serveur en suivant les étapes suivantes :

Envoyez le signal HUP à l'ancien processus maître - il démarrera son processus de travail sans recharger le fichier de configuration

Envoyez le signal QUIT au nouveau processus principal, lui demandant d'arrêter calmement son processus de travail

Envoyez le signal TERM au nouveau processus principal pour le forcer à quitter

Si le nouveau processus de travail ne peut pas se terminer pour une raison quelconque, envoyez-lui un signal KILL

Une fois le nouveau processus principal terminé, l'ancien processus principal supprimera le préfixe .oldbin et le restaurera dans son fichier .pid. De cette façon, tout sera restauré à ce qu'il était avant la mise à niveau.

Si la tentative de mise à niveau réussit et que vous souhaitez conserver le nouveau serveur, envoyez un signal QUIT à l'ancien processus principal pour quitter et laisser uniquement le nouveau serveur en cours d'exécution :

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​362641root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!