nginx常用配置/负载均衡
作者:互联网
文章目录
1.指定nginx 的运行身份
查看nginx的worker运行身份为nobody ,需要为其添加指定用户
useradd -d /usr/local/nginx -M -s /sbin/nologin nginx
修改nginx的配置文件,指定运行身份
vim /usr/local/nginx/conf/nginx.conf
重载nginx后查看worker的运行身份
2.优化性能相关的配置
worker进程的数量
worker进程的数量,通常应该为当前主机的cpu的物理核心数,查看当前主机的核心数量lscpu
修改配置文件中的worker数量为自动获取
vim /usr/local/nginx/conf/nginx.conf
重载nginx后查看worker运行数量,发现数量cpu数量一致了。
worker 进程绑定到指定cpu
将worker进程绑定到指定cpu上,可以提高缓存命中率
worker_cpu_affinity 0001 0010 0100 1000; 分别将worker进程绑定到1,2,3,4号CPU上
编辑配置文件
vim /usr/local/nginx/conf/nginx.conf
控制nginx的最大连接数
单个进程允许的最大连接数需要根据服务器性能和内存使用量作相应的调整。进程的最大连接数又受到linux系统进程的最大打开文件数限制。所以nginx的最大总并发连接数=worker 数量 * 单个进程最大连接数
修改连接数
vim /usr/local/nginx/conf/nginx.conf
再修改linux系统所限制的最大连接数,数量一般应大于所申请数。
vim /etc/security/limits.conf
一个应用程序能开启的最大连接数是受到限制的,内核限制>系统限制>应用软件限制。
查看内科支持的最大文件打开数
sysctl -a | grep file
查看系统支持的最大文件打开数
ulimit -a
3.nginx 平滑升级
nginx 方便地帮助我们实现了平滑升级。其原理简单概括,就是:
(1)在不停掉老进程的情况下,启动新进程。
(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
(3)新进程接受新请求。
(4)老进程处理完所有请求,关闭所有连接后,停止。
下载新版本 nginx,解压, 准备进行源码编译,
[root@server1 ~]# tar zxf nginx-1.21.1.tar.gz
[root@server1 ~]# cd nginx-1.21.1/auto
[root@server1 auto]# vim cc/gcc ##轻量化编译,注释掉debug
进行预编译和正式编译,原有的参数不能少,假如想添加其他新模块,,直接在后面添加相关配置参数即可。只编译,不安装,
[root@server1 nginx-1.21.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
[root@server1 nginx-1.21.1]# make
备份原nginx二进制文件,期间nginx不会停止服务,将新编辑的二进制序覆盖掉原来安装路径下的nginx.
[root@server1 nginx-1.21.1]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
[root@server1 nginx-1.21.1]# cp -f objs/nginx /usr/local/nginx/sbin/
然后查看只有老进程在工作,在新版本的编译目录中给nginx发送平滑迁移信号。
[root@server1 nginx-1.21.1]# kill -USR2 14408 ##老版本的masterPID
新版本的master和worker 已经和就版本同时存在,
关闭旧的nginx工作进程
[root@server1 nginx-1.21.1]# kill -WINCH 14408 ##老版本的masterPID
可以看到旧的工作进程已经被关闭,只剩下旧的主进程与新的工作进程同时存在,此时访问已经是新版本
再结束旧的主进程
[root@server1 nginx-1.21.1]# kill -QUIT 14408##老版本的masterPID
再次观查,只有新的主进程和工作进程;
注意:之前的master进程不要结束掉,万一新版本有问题,可以回滚,等新版本确认没有问题了,在结束掉
命令 | 作用 |
---|---|
kill -USR2 进程号 | 不再让worker进程接受请求,当前请求处理完就让worker进程退出 |
kill -WINCH 进程号 | 处理完关闭 |
kill-HUP 进程号 | 启动进程 |
4.版本回退
与版本升级一样,将旧版本的二进制应用文件替换新版本的,这里使用之前备份的老版本直接覆盖。
[root@server1 nginx-1.21.1]# cp -f /usr/local/nginx/sbin/nginx_old nginx
[root@server1 sbin]# kill -HUP 19715 ##旧版本的PID
当旧版本已经被关闭,ps查询不到时,
[root@server1 objs]# kill -USR2 2113 3##新版本的PID
就可以拉起旧版本的worker进程
新版本的master和worker 已经和就版本同时存在,
关闭新的nginx工作进程
[root@server1 sbin]# kill -WINCH 19715##当前版本的PID
标签:负载,版本,worker,server1,nginx,均衡,进程,root 来源: https://blog.csdn.net/weixin_42200500/article/details/120139638