Anda boleh menggantikan nginx lama boleh laku dengan yang baharu tanpa mengganggu perkhidmatan - permintaan baharu tidak akan hilang (apabila menaik taraf kepada versi baharu atau menambah/mengalih keluar modul pelayan). (Pembelajaran yang disyorkan: operasi dan penyelenggaraan nginx)
Mula-mula, gunakan program boleh laku baharu untuk menggantikan yang lama (yang terbaik adalah membuat sandaran), dan kemudian hantar isyarat USR2 (kill-USR2pid) ke proses utama.
Proses utama akan menamakan semula fail .pidnya kepada .oldbin (contohnya: /usr/local/nginx/logs/nginx.pid.oldbin), kemudian laksanakan program boleh laku baharu dan mulakan proses utama baharu dan kerja baharu mengikut turutan Proses:
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)
Pada masa ini, dua kejadian nginx akan dijalankan pada masa yang sama dan memproses permintaan masuk bersama-sama. Untuk menghapuskan contoh lama secara berperingkat, anda mesti menghantar isyarat WINCH ke proses induk lama, dan kemudian proses pekerjanya akan mula ditutup dengan anggun:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3313533126nobody0.01380kqreadnginx:workerprocessisshuttingdown(nginx)
3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
Selepas beberapa ketika, proses pekerja lama memproses semua permintaan yang disambungkan dan kemudian keluar, dan hanya proses pekerja baharu yang mengendalikan permintaan masuk:
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)
Pada masa ini, kerana pelayan lama belum lagi menutup soket yang didengarinya, anda masih boleh memulihkan pelayan lama dengan mengikuti langkah berikut:
Hantar isyarat HUP ke proses induk lama - ia akan memulakan proses pekerjanya tanpa memuatkan semula fail konfigurasi
Hantar isyarat BERHENTI ke proses utama baharu, minta ia mematikan proses kerjanya dengan tenang
Hantar isyarat TERM ke proses utama baharu untuk memaksanya keluar
Jika proses pekerja baharu tidak boleh keluar atas sebab tertentu, hantarkan isyarat KILL
Selepas proses utama baharu keluar, proses utama lama akan mengalih keluar awalan .oldbin dan memulihkannya kepada fail .pidnya Dengan cara ini, semuanya akan dipulihkan kepada keadaan sebelum naik taraf.
Jika percubaan naik taraf berjaya dan anda ingin mengekalkan pelayan baharu, hantar isyarat BERHENTI ke proses utama lama untuk keluar dan biarkan pelayan baharu sahaja berjalan:
PIDPPIDUSER%CPUVSZWCHANCOMMAND
362641root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx
3626536264nobody0.01364kqreadnginx:workerprocess(nginx)
3626636264nobody0.01364kqreadnginx:workerprocess(nginx)
3626736264nobody0.01364kqreadnginx:workerprocess(nginx)
Atas ialah kandungan terperinci Bagaimana untuk menaik taraf dengan lancar dalam operasi dan penyelenggaraan nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!