网站首页 > 技术教程 正文
Nginx进程间的通信机制
概述
linux进程间通讯方式
在linux系统中进程之间的通讯方式有
套接字、共享内存、消息队列、管道、信号
Nginx进程间通讯方式
Nginx选择其中的套接字、共享内存、信号作为
同步master进程和多个worker进程间数据的方式
Nginx互斥锁
在多个进程访问共享资源时
还需要提供一种机制使各个进程有序、安全的访问资源
避免并发访问带来的未知结果
Nginx主要使用了3种同步方式
原子操作、信号量、文件锁
根据操作系统来选择互斥锁的实现方式
不要随意使用信号量来实现互斥锁
每个worker进程都会同时处理千万请求
处理任何一个请求都不应该阻塞当前进程处理后续的其他请求
不要随意使用信号量作为互斥锁
这会使得worker进程在得不到锁时进入睡眠状态
从而导致这个worker进程上的请求被饿死
共享内存
通过mmap或者shmget系统调用在内存中创建一块连续的线性地址空间
对应的通过munmap或者shmdt系统调用释放这块内存
共享内存的好处
当多个进程使用同一块共享内存时
在任何一个进程修改了共享内存中的内容后
其他进程通过访问这段共享内存都能得到修改后的内容
linux通过mmap向应用程序提供共享内存
mmap可以将磁盘文件映射到内存中
直接操作内存时Linux内核将负责同步内存和磁盘文件中的数据
mmap函数的5个入参含义
linux mmap函数
如果flags设置为不使用文件映射方式
则fd和offset参数则没有意义
此时的mmap函数的功能和ngx_shm_alloc的功能几乎完全相同
nginx定义共享内存的结构体
Nginx在Master进程fork出worker子进程后
所有的进程开始使用这块内存中的数据
统计某个时刻下nginx已经处理过的连接状况
作为Web服务器
Nginx具有统计整个服务器Http连接框架的功能
(不是某一个worker进程的状况,
而是所有worker进程连接状况)
共享内存中有一个原子变量
ngx_sta_reading表示正在接收TCP流的连接数
在接受请求的方法中将表示正在接收TCP流连接数的统计变量加1
在处理请求的方法中将该统计变量减1
- 上一篇: 5分钟搞懂nginx进程模型及相关配置
- 下一篇: 快速Nginx入门,看此文即可快速掌握
猜你喜欢
- 2024-10-14 nginx的进程模型与配置(nginx进程数配置)
- 2024-10-14 还在为购买了便宜的服务器却不能用来做更多事而烦恼吗?
- 2024-10-14 快速Nginx入门,看此文即可快速掌握
- 2024-10-14 5分钟搞懂nginx进程模型及相关配置
- 2024-10-14 nginx——优化 Nginx worker 进程数
- 2024-10-03 Nginx 最大连接数(nginx最大连接数设置)
- 2024-10-03 浅谈linux下进程最大数、最大线程数、进程打开的文件数
- 2024-10-03 Nginx凭啥并发数可以达到3w?(nginx10万并发)
- 2024-10-03 Nginx基础配置实例需求分析(nginx配置文件详解带实例)
- 2024-10-03 nginx的进程模型及框架(nginx的进程结构)
你 发表评论:
欢迎- 08-06linux 和 windows文件格式互相转换
- 08-06谷歌 ChromeOS 已支持 7z、iso、tar 文件格式
- 08-06Linux下比较文件内容的6种方法
- 08-06文件格式及功能汇总
- 08-0610个Linux文件内容查看命令的实用示例
- 08-06Linux-如何区分不同文件类型
- 08-06Zabbix技术分享——监控windows进程资源使用情况
- 08-06Linux系统卡顿?学会ps命令这三招,轻松定位问题进程
- 最近发表
- 标签列表
-
- 下划线是什么 (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)
本文暂时没有评论,来添加一个吧(●'◡'●)