目录
一. nginx并发优化(这里实验没做)
Linux下高并发socket最大连接数所受的各种限制
1.修改用户进程可打开文件数限制
/etc/security/limits.conf
nginx - nofile 65535
2.Linux系统级的最大打开文件数限制
fs.file-max = 188414 //和内存容量相关
3.修改网络内核对TCP连接的有关限制
net.ipv4.ip_local_port_range = 1024 65535
4.限制接收新 TCP 连接侦听队列的大小
net.core.somaxconn = 2048
5.启用tcp连接timewait快速回收和重用
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
worker_processes //工作进程数
worker_connections //单个工作进程并发连接数
nginx作为http服务器时: max_clients = worker_processes * worker_connections
nginx作为反向代理服务器时: max_clients = worker_processes * worker_connections / 2
1. ulimit -a 查看用户进程能打开的最大文件数
二.nginx平滑升级(实验出现错误,排错失败)
为什么需要平滑升级:当服务器在运行时,需要升级的情况下,平滑升级即就是不断开服务器就可以进行升级,最大限度保证数据的完整性。
准备新版本1.21.1的源代码编译包,老操作,解压进入目录
scp /home/westos/Desktop/aaaalinux\ file/docs/lamp/nginx-1.21.1.tar.gz root@server1:~
进入解压后的目录,修改相关配置
vim auto/cc/gcc 把debug注释掉版本号就不取消了,因为要看效果
配置:这里注意这条命令一定和最近版本的nginx安装时的命令一样,保证功能相同
./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx编译 make
不要make install
老版本的备份与新版本迭代:
保存备份老版本nginx cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-old
将生成的nginx去覆盖安装目录下的老的nginx cp -f objs/nginx /usr/local/nginx/sbin/nginx
获取当前nginx主进程pid ps ax|grep nginx
升级新程序 kill -USR2 21105 这是升级,不是杀进程查看新程序 ps ax|grep nginx
正确情况应该是下图,我的一直报错,此时用curl -I localhost,依旧不显示版本号
kill -WINCH 21105,此时新nginx接受全部工作,curl -I localhost显示版本号
关闭旧nginx的从进程,留下主进程方便后边版本回退
三.nginx版本回退(平滑升级都没做,这个能做???)
假如新版本性能很拉跨,怎么返回旧版本?版本回退:
还原nginx程序:# cp -f nginx.old nginx
唤醒原进程:# kill -HUP 29636
回收新版本的worker进程: kill -WINCH 29761
关闭新版本主进程: kill -QUIT 29761
版本平滑升级后进程的保留状态如下图: