网站首页 > 技术教程 正文
今天来给大家讲解一下Nginx的工作原理以及的一些可优化的参数配置,也都是在实际工作中总结出来的经验。
一、nginx工作原理
1.1、nginx进程模型
nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程,如下图所示:
1.2、master和worker的工作职责
master是一个领导,它只负责管理worker,具体的工作任务由下面的worker(工人)去做。
master的职责:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
worker的职责:处理来自客户端的请求,多个worker进程之间是对等的,他们同等竞争来自客户端的请求,如下图所示:
各个worker进程互相之间是独立的,一个请求只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。
1.3、master-workers的机制的好处
1、对于每个 worker 进程来说,独立的进程,不需要加锁,所以省掉了加锁带来的开销,同时在编程以及问题查找时,也会方便很多。
2、采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的worker 进程。当然,worker 进程的异常退出,肯定是程序有 bug 了,异常退出,会导致当前 worker 上的所有请求失败,不过不会影响到所有请求,所以降低了风险。
二、优化参数配置
2.1、worker_processes进程数设置
Nginx 采用了 io 多路复用机制,每个 worker 都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话下。每个 worker的线程可以把一个 cpu的性能发挥到极致,所以 worker 数和服务器的cpu核数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。
修改Nginx的nginx.conf配置文件,设置worker_processes进程数量
# 设置 worker 数量。
worker_processes 2
CentOS 查看系统 CPU个数、核心数、线程数的几个命令:
1、查看CPU物理个数
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
2、查看CPU核数
grep 'core id' /proc/cpuinfo | sort -u | wc -l
3、查看CPU线程数
grep 'processor' /proc/cpuinfo | sort -u | wc -l
2.2、Nginx能支持的最大并发数
nginx的配置文件中有一个worker_connection属性的配置,这个是表示每个 worker 进程所能建立连接的最大值,所以,一个 nginx 能建立的最大连接数,理论上应该是 worker_connections * worker_processes。
那么问题来了,发送一个http请求,占用了woker的几个连接数呢?答案应该是2个或者4个
如果是支持 http1.1 的浏览器每次访问要占两个连接,所以Nginx处理普通的静态访问最大并发数是: worker_connections * worker_processes /2
如果是作为HTTP反向代理服务器,Nginx能处理的最大并发数量应该是 worker_connections *worker_processes/4。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。
举个例子:
nginx 有一个 master ,有四个 worker ,每个 worker 支持最大的连接数1024 ,那么nginx支持的最大并发数是多少?
普通的静态访问最大并发数是: worker_connections * worker_processes /2
所以就是1024*4/2=2048
而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections *worker_processes/4
所以就是1024*4/4=1024
- 上一篇: Nginx优化配置,轻松应对十万并发
- 下一篇: 关于 Nginx 的一些优化(突破十万并发)
猜你喜欢
- 2024-10-09 高性能网站服务器的架设优化-Nginx优化
- 2024-10-09 Nginx性能优化(nginx性能调整)
- 2024-10-09 22页PPT干货:不会Nginx,早晚被优化
- 2024-09-09 蓝易云 - Nginx优化教程。(易语言蓝奏云解析)
- 2024-09-09 NGINX 优化(nginx优化 突破十万并发)
- 2024-09-09 Nginx参数优化概述(nginx常用优化)
- 2024-09-09 Nginx深度优化(nginx内核优化)
- 2024-09-09 关于 Nginx 的一些优化(突破十万并发)
- 2024-09-09 nginx的一些性能参数及优化(nginx性能优化 博客)
- 2024-09-09 Nginx优化配置,轻松应对十万并发
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)