Bagaimana untuk melaksanakan penggunaan panas Nginx

王林
Lepaskan: 2023-05-24 16:55:39
ke hadapan
1277 orang telah melayarinya

Tutup tembok api dan benarkan akses setempat kepada perkhidmatan Nginx melalui penyemak imbas.

[root@localhost ~]# systemctl stop firewalld
Salin selepas log masuk

Bagaimana untuk melaksanakan penggunaan panas Nginx

Semaphore

Lihat semaphore:

[root@localhost ~]# kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	
Salin selepas log masuk

mempunyai 64 jenis semaphore Berikut ialah beberapa isyarat yang biasa digunakan:

  • SIGINT, SIGTERM: Penutupan pantas.

  • SIGQUIT: penutupan anggun (tutup proses dengan anggun, iaitu tunggu sehingga permintaan selesai dan kemudian tutup).

  • SIGHUP: Mulakan semula lancar, muat semula fail konfigurasi (mulakan semula lancar, tidak perlu mulakan semula pelayan selepas mengubah suai fail konfigurasi).

  • SIGUSR1: Baca semula fail log, yang lebih berguna apabila memotong fail log.

  • SIGUSR2: Tingkatkan program boleh laku dengan lancar, nginx digunakan semasa menaik taraf.

  • SIGWINCH: Matikan proses kerja dengan anggun.

Pengerahan panas Nginx

Nginx ialah pelayan proksi terbalik berbilang proses dan berprestasi tinggi, termasuk satu proses master dan berbilang proses worker ( Bilangan proses worker boleh ditetapkan melalui parameter nginx.conf dalam fail konfigurasi worker_processes (lalai ialah 1), supaya pemproses berbilang teras boleh digunakan sepenuhnya.

Bagaimana untuk melaksanakan penggunaan panas Nginx

Secara lalai terdapat proses 1 worker.

Bagaimana untuk melaksanakan penggunaan panas Nginx

dan proses master dan proses worker mempunyai hubungan proses ibu bapa-anak.

Bagaimana untuk melaksanakan penggunaan panas Nginx

NginxMod kerja ialah berbilang proses NginxSelepas permulaan, akan ada satu proses master dan berbilang worker proses (. lalai1), berbilang proses anak worker akan mendengar port yang dipantau oleh proses induk master (rujuk perhubungan antara proses ibu bapa dan anak), dan memproses permintaan secara selari. Proses induk master digunakan terutamanya untuk mengurus proses anak worker (urus proses worker yang sebenarnya menyediakan perkhidmatan, menghantar isyarat kepada proses worker, memantau status berjalan proses worker dan apabila proses worker keluar secara tidak normal , akan memulakan semula proses worker baharu), membaca dan mengesahkan maklumat konfigurasi, proses master tidak akan menyediakan perkhidmatan kepada permintaan pengguna dan permintaan pengguna diproses oleh proses worker .

Nginx dikawal melalui semaphore, seperti berhenti dan memulakan semula Nginx. Semaphore ialah mekanisme untuk komunikasi antara proses Proses utama master mengawal pelbagai worker proses anak juga melalui semaphore.

Bagaimana untuk melaksanakan penggunaan panas Nginx

Sekarang mari kita tunjukkan cara Nginx melaksanakan penggunaan panas Blogger mensimulasikan Nginx dengan mengubah suai fail konfigurasi Nginx Naik Taraf (copy salinan dahulu).

[root@localhost ~]# cd /usr/local/nginx/conf/
[root@localhost conf]# ll
总用量 68
-rw-r--r--. 1 root root 1077 12月 20 20:24 fastcgi.conf
-rw-r--r--. 1 root root 1077 12月 20 20:24 fastcgi.conf.default
-rw-r--r--. 1 root root 1007 12月 20 20:24 fastcgi_params
-rw-r--r--. 1 root root 1007 12月 20 20:24 fastcgi_params.default
-rw-r--r--. 1 root root 2837 12月 20 20:24 koi-utf
-rw-r--r--. 1 root root 2223 12月 20 20:24 koi-win
-rw-r--r--. 1 root root 5231 12月 20 20:24 mime.types
-rw-r--r--. 1 root root 5231 12月 20 20:24 mime.types.default
-rw-r--r--. 1 root root 2656 12月 20 21:26 nginx.conf
-rw-r--r--. 1 root root 2656 12月 20 20:24 nginx.conf.default
-rw-r--r--. 1 root root  636 12月 20 20:24 scgi_params
-rw-r--r--. 1 root root  636 12月 20 20:24 scgi_params.default
-rw-r--r--. 1 root root  664 12月 20 20:24 uwsgi_params
-rw-r--r--. 1 root root  664 12月 20 20:24 uwsgi_params.default
-rw-r--r--. 1 root root 3610 12月 20 20:24 win-utf
[root@localhost conf]# cp nginx.conf nginx_old.conf
[root@localhost conf]# vim nginx.conf
Salin selepas log masuk

Bagaimana untuk melaksanakan penggunaan panas Nginx

Memandangkan Nginx belum lagi digunakan, mengakses http://192.168.1.199/ kini masih menjadi halaman Nginx asal.

Bagaimana untuk melaksanakan penggunaan panas Nginx

Lihat proses Nginx:

[root@localhost conf]# ps -ef | grep nginx
root     14964     1  0 22:25 ?        00:00:00 nginx: master process ./nginx
nobody   14965 14964  0 22:25 ?        00:00:00 nginx: worker process
root     15016  1521  0 23:07 pts/0    00:00:00 grep --color=auto nginx
Salin selepas log masuk

menghantar isyarat master ke proses SIGUSR2 untuk membiarkan Nginx Tingkatkan program boleh laku dengan lancar. Anda boleh melihat bahawa Nginx telah memulakan semula sekumpulan master proses dan worker proses, dan proses master baharu ialah proses anak proses master lama (melalui hubungan warisan proses ibu bapa-anak , proses master baharu boleh Adalah mudah untuk mewarisi sumber berkaitan proses master lama).

[root@localhost conf]# kill -s SIGUSR2 14964
[root@localhost conf]# ps -ef | grep nginx
root     14964     1  0 22:25 ?        00:00:00 nginx: master process ./nginx
nobody   14965 14964  0 22:25 ?        00:00:00 nginx: worker process
root     15019 14964  0 23:18 ?        00:00:00 nginx: master process ./nginx
nobody   15020 15019  0 23:18 ?        00:00:00 nginx: worker process
root     15022  1521  0 23:19 pts/0    00:00:00 grep --color=auto nginx
Salin selepas log masuk

dan Nginx menyimpan fail pid lama dan baharu dalam direktori log (disimpan master proses ID lama dan baharu).

[root@localhost conf]# ll ../logs
总用量 16
-rw-r--r--. 1 root root 2729 12月 20 23:20 access.log
-rw-r--r--. 1 root root  708 12月 20 23:18 error.log
-rw-r--r--. 1 root root    6 12月 20 23:18 nginx.pid
-rw-r--r--. 1 root root    6 12月 20 22:25 nginx.pid.oldbin
[root@localhost conf]# cat ../logs/nginx.pid
15019
[root@localhost conf]# cat ../logs/nginx.pid.oldbin 
14964
Salin selepas log masuk

menghantar isyarat master ke proses SIGWINCH lama, membenarkan proses master lama menutup proses worker lama.

[root@localhost conf]# kill -s SIGWINCH 14964
[root@localhost conf]# ps -ef | grep nginx
root     14964     1  0 22:25 ?        00:00:00 nginx: master process ./nginx
root     15019 14964  0 23:18 ?        00:00:00 nginx: master process ./nginx
nobody   15020 15019  0 23:18 ?        00:00:00 nginx: worker process
root     15030  1521  0 23:27 pts/0    00:00:00 grep --color=auto nginx
Salin selepas log masuk

Sekarang lawati http://192.168.1.199/ dan ia akan bertindak balas 404.

Bagaimana untuk melaksanakan penggunaan panas Nginx

dan mengakses http://192.168.1.199/nacos akan mengakses perkhidmatan Nacos.

Bagaimana untuk melaksanakan penggunaan panas Nginx

如果升级版本没有问题,就可以给旧master进程发送SIGQUIT信号,让旧master进程关闭,这样就只剩下新master进程和新worker进程,实现了Nginx的热部署。

[root@localhost conf]# kill -s SIGQUIT 14964
[root@localhost conf]# ps -ef | grep nginx
root     15019     1  0 23:18 ?        00:00:00 nginx: master process ./nginx
nobody   15020 15019  0 23:18 ?        00:00:00 nginx: worker process
root     15034  1521  0 23:31 pts/0    00:00:00 grep --color=auto nginx
Salin selepas log masuk

如果升级版本有问题,需要回滚到之前的版本,就可以给旧master进程发送SIGHUP信号,因为博主重新进行了测试,所以进程号都变了,但很显然旧master进程重新创建了旧worker进程,并且进行版本升级的masterworker进程没有被关闭。

[root@localhost conf]# kill -s SIGHUP 15084
[root@localhost conf]# ps -ef | grep nginx
root     15084     1  0 12月20 ?      00:00:00 nginx: master process ./nginx
root     15106 15084  0 12月20 ?      00:00:00 nginx: master process ./nginx
nobody   15107 15106  0 12月20 ?      00:00:00 nginx: worker process
nobody   15131 15084  0 00:02 ?        00:00:00 nginx: worker process
root     15141  1521  0 00:09 pts/0    00:00:00 grep --color=auto nginx
Salin selepas log masuk

给新master进程发送SIGQUIT信号,让新master进程关闭,这样就只剩下旧master进程和新创建的旧worker进程,实现了回滚。

[root@localhost conf]# kill -s SIGQUIT 15106
[root@localhost conf]# ps -ef | grep nginx
root     15084     1  0 12月20 ?      00:00:00 nginx: master process ./nginx
nobody   15131 15084  0 00:02 ?        00:00:00 nginx: worker process
root     15159  1521  0 00:25 pts/0    00:00:00 grep --color=auto nginx
Salin selepas log masuk

回滚成功。

Bagaimana untuk melaksanakan penggunaan panas Nginx

还需要对版本回滚(即博主这里的配置文件回滚,不然下次重启就会出问题)。

[root@localhost conf]# cp -f nginx_old.conf nginx.conf
cp:是否覆盖"nginx.conf"? y
Salin selepas log masuk

为什么给旧master进程发送SIGHUP信号,旧master进程重新创建的worker进程没有重新读取配置文件?下面是官方的说明:

Send the HUP signal to the old master process. The old master process will start new worker processes without re-reading the configuration. After that, all new processes can be shut down gracefully, by sending the QUIT signal to the new master process.

向旧master进程发送SIGHUP信号。旧master进程将启动新worker进程,而无需重新读取配置。之后,通过向新master进程发送SIGQUIT信号,所有新进程都可以正常关闭。

如果不存在新进程的情况下(只有一组masterworker进程),修改配置文件,再向master进程发送SIGHUP信号,看是否会重新加载配置文件。

Bagaimana untuk melaksanakan penggunaan panas Nginx

[root@localhost conf]# kill -s SIGHUP 15084
Salin selepas log masuk

很显然配置文件被重新加载了,由于博主还没有看源码,只能猜测Nginx的实现(如果说错了,请大家评论补充),Nginx应该是根据当前是否在进行热部署(存在新master进程),来决定SIGHUP信号是否需要重新加载配置文件。

Bagaimana untuk melaksanakan penggunaan panas Nginx

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penggunaan panas Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan