hand
_1_14_35
4
返回栏目
1k
2k
0.4k
0.6k
0.9k
0.7k
3k
2k
0.1k
1k
0k
1k
0k
0.4k
0.3k
0.1k
0.6k
0k
1k
3k
2k
0k
0k
0.4k
2k
1k
0k
6k
0.8k
1k
0.5k
2k
0k
0k
0k
2k
0k
4k
2k
1k
1k
2k
0k
0.5k
0k
1k
0.2k
0.3k
0.1k
0k
0k
0.8k
1k
0.6k
0k
0k
2k
0.6k
1k
2k
2k
0.6k
0.6k
0.5k
1k
2k
0.5k
0.1k
0.2k
4k
0k
0.1k
0.8k
1k
0.3k
0k
0.3k
0.1k
1k
8k
0.1k
0.7k
0.1k
0.3k
0.9k
0.2k
4k
0.2k
6k
3k
3k
1k
3k
0.1k
1k
0.2k
0k
0.7k
0.4k
2k
2k
0.5k
0.8k
5k
0.1k
0.3k
0.3k
0.5k
0.1k
1k
0k
0.7k
0.2k
2k
2k
1k
6k
3k
1k
2k
1k
2k
2k
1k
0k
0k
1k
0k
0k
0.3k
0.3k
0.2k
0k
0.3k
0k
1k
0.1k
0.6k
0k
0k
0k
0k
0k
0.1k
0k
0k
0k
0.2k
0k
0.2k
0k
0k
0k
0k
0k
0k
0k
0.9k
1k
2k
0.8k
0.4k
0k
0k
0k
0.5k
0k
0k
0k
0k
0.4k
0k
0k
0.1k
返回服务器栏目
作者:
贺及楼
成为作者
更新日期:2024-05-23 16:09:22
ps -ef | grep nginx
|
master进程
| | |
有信号 有信号 有信号
| | |
worker进程 worker进程 worker进程——————>回master进程争抢
| | | | | |
连接 连接 连接 连接 连接 连接
| | | | | |
tomcat tomcat tomcat tomcat tomcat tomcat
| | | | | |
Client Client Client Client Client Client
每个worker进程是独立的进程,不需要加锁,省掉锁带来的开销
同时在编程以及问题查找时,也会方便很多。
独立的进程,让互相之间不会影响,一个进程退出后,其它进程还在工作服务不会中断,master进程则很快启动新的worker 进程
worker进程的异常退出,肯定是程序有bug了
异常退出,会导致当前worker上的所有请求失败,不过不会影响到所有请求,所以降低了风险。
与Redis相似,io多路复用(win不能最大化)
每个worker都是独立一个进程
一个进程里只有一个主线程,通过异步非阻塞的方式来处理请求
即使是千上万个请求也不在话下
每个worker的线程可以把一个cpu的性能发挥到极致。
所以worker数和服务器的cpu数相等是最为适宜的。
设少了会浪费gu,设多了会造成cpu频繁切换上下文带来的损耗。
设置worker数量。
worker processes 4
work绑定cpu(4work绑定4cpu)。
worker. cpu affinity 0001 0010 0100 1000
每个worker进程能建立的最大连接数,应该是
worker_connections * worker_processes
4 * 1024 = 4096
1024我猜的是1个线程最小占1m
支持http1.1的浏览器每次访问要占两个连接,所以普通的静态访问最大并发数是:
worker connections * worker processes /2
client抢到手worker - 1次
worker返回client - 1次
HTTP作为反向代理来说,最大并发数量应该是
worker connections * worker_processes/4
因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。
client抢到手worker - 1次
worker转tomcat - 1次
tomcat返回worker - 1次
worker返回client - 1次
服务器
整章节共174节
快分享给你的小伙伴吧 ~