- 浏览: 103680 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (151)
- 120D02 (5)
- 直升机 (1)
- 我的技术资料收集 (82)
- 的技术资料收集 (4)
- .NET Solution (2)
- ASP.NET (1)
- Linq to sql (1)
- 数据库技术(MS SQL) (2)
- 架构/设计 (1)
- 敏捷/持续集成 (1)
- C#.NET开发 (1)
- Matlab开发 (1)
- WinForm开发 (1)
- 开源技术 (1)
- jQuery (1)
- 我的博文 (4)
- js (2)
- android (2)
- 9. 读书笔记 (1)
- CSS3 (1)
- HTML5 (1)
- JavaScript (5)
- 移动开发 (2)
- 编程心得 (1)
- Linux操作系统 (1)
- (BI)商业智能 (1)
- IOS (1)
- Windows Phone (2)
- C# API (1)
- JQuery系列 (1)
- TFS (1)
- C# (2)
- ExtJs (1)
- .NET (1)
- Nginx (1)
- WCF学习笔记 (1)
- Computer Graphic (1)
- IT产品 (1)
- 工具分享 (1)
- MySelf (1)
- C#专栏 (1)
- 管理 (1)
- 基于Oracle Logminer数据同步 (1)
- 日常 (1)
- 实用工具 (1)
- 网页设计 (1)
- avalon (1)
- flash (1)
- DDD (1)
- 01 技术Android (1)
- WCF (1)
- selenium (1)
最新评论
-
464410531:
三国杀。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ...
实用的职场宝典:不提拔你,就因为你只想把工作做好
Nginx架构
Nginx全程是什么? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
daemon守护线程
nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。
当然nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是nginx的默认方式。
master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
worker进程则是处理基本的网络事件。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。
worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致。更多的worker数,只会导致进程来竞争cpu资源了,从而带来不必要的上下文切换。而且,nginx为了更好的利用多核特性,具有cpu绑定选项,我们可以将某一个进程绑定在某一个核上,这样就不会因为进程的切换带来cache的失效。
惊群现象
每个worker进程都是从master进程fork过来。在master进程里面,先建立好需要listen的socket之后,然后再fork出多个worker进程,这样每个worker进程都可以去accept这个socket(当然不是同一个socket,只是每个进程的这个socket会监控在同一个ip地址与端口,这个在网络协议里面是允许的)。一般来说,当一个连接进来后,所有在accept在这个socket上面的进程,都会收到通知,而只有一个进程可以accept这个连接,其它的则accept失败。
相对于线程,采用进程的优点
进程之间不共享资源,不需要加锁,所以省掉了锁带来的开销。
采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master进程则很快重新启动新的worker进程。
编程上更加容易。
多线程的问题
而多线程在多并发情况下,线程的内存占用大,线程上下文切换造成CPU大量的开销。想想apache的常用工作方式(apache也有异步非阻塞版本,但因其与自带某些模块冲突,所以不常用),每个请求会独占一个工作线程,当并发数上到几千时,就同时有几千的线程在处理请求了。这对操作系统来说,是个不小的挑战,线程带来的内存占用非常大,线程的上下文切换带来的cpu开销很大,自然性能就上不去了,而这些开销完全是没有意义的。
异步非阻塞
异步的概念和同步相对的,也就是不是事件之间不是同时发生的。
非阻塞的概念是和阻塞对应的,阻塞是事件按顺序执行,每一事件都要等待上一事件的完成,而非阻塞是如果事件没有准备好,这个事件可以直接返回,过一段时间再进行处理询问,这期间可以做其他事情。但是,多次询问也会带来额外的开销。
总的来说,Nginx采用异步非阻塞的好处在于:
- 不需要创建线程,每个请求只占用少量的内存
- 没有上下文切换,事件处理非常轻量
淘宝tengine团队说测试结果是“24G内存机器上,处理并发请求可达200万”。
发表评论
-
Javascript:猜猜弹出的是啥?为啥? - 幸福框架
2013-06-28 13:33 393原帖地址:http://www.cnblogs.com/hap ... -
C#中WindowsForm常见控件的运用 -- - 李晓峰
2013-06-28 13:27 1665原帖地址:http://www.cnblogs.com/liy ... -
海量数据处理利器之Hash——在线邮件地址过滤 - MyDetail
2013-06-27 12:00 601原帖地址:http://www.cnblo ... -
ASP.NET MVC 4 for Visual Studio 2010 下载地址 - 张鸿伟
2013-06-27 11:48 711原帖地址:http://www.cnblogs.com/wei ... -
【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化 - r01cn
2013-06-26 11:00 870原帖地址:http://www.cnblogs.com/r01 ... -
[珠玑之椟]估算的应用与Little定律 - 五岳
2013-06-26 10:54 585原帖地址:http://www.cnblogs.com/wuy ... -
30行,金额转人民币大写的代码 - 史蒂芬.王
2013-06-26 10:42 972原帖地址:http://www.cnblogs.com/ste ... -
从银行的钱荒看一个公司的团队建设 产品线过多最终导致最赚钱的项目面临破产 - James Li
2013-06-26 10:36 594原帖地址:http://www.cnblogs.com/Jam ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 13:39 490原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 13:33 578原帖地址:http://www.cnblo ... -
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" - 量子计算机
2013-06-25 13:27 830原帖地址:http://www.cnblogs.com/DSh ... -
一步一步将自己的代码转换为观察者模式 - 文酱
2013-06-23 11:36 568原帖地址:http://www.cnblo ... -
iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance) - VicStudio
2013-06-23 11:30 500原帖地址:http://www.cnblogs.com/vic ... -
记录asp.net在IE10下事件丢失排错经过 - Adming
2013-06-23 11:24 661原帖地址:http://www.cnblogs.com/wea ... -
记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客! - 三生石上
2013-06-23 11:18 752原帖地址:http://www.cnblogs.com/san ... -
3、使用Oracle Logminer同步Demo
2013-06-19 10:33 534原帖地址:http://www.cnblogs.com/shi ... -
算法实践——数独的基本解法
2013-06-19 10:27 1393原帖地址:http://www.cnblogs.com/gre ... -
简单实现TCP下的大文件高效传输
2013-06-19 10:21 650原帖地址:http://www.cnblogs.com/sma ... -
avalon - 初步接触
2013-06-18 10:06 751原帖地址:http://www.cnblogs.com/aar ... -
证书打印《二》
2013-06-17 10:47 492原帖地址:http://www.cnblogs.com/bin ...
相关推荐
nginx集群,分布式服务架构,特点:热部署,可高并发连接,低内存消耗,处理响应快,可靠性高等
1,Nginx学习大纲:分基础篇;进阶篇;架构篇;模块篇几个阶段学习,每个阶段的内容个侧重点不同,如nignx指令,nginx配置;nginx服务集成;nginx集群,负载均衡,反向代理,Lua等等。 2,Nginx案例:学习Nginx离不...
Java架构方面学习笔记,java后端知识、并发多线程、dubbo、springMVC,SpringBoot、MySql调优、Nginx、Redis、Zookeeper
Java架构面试笔试专题资料及经验(含答案)和学习笔记: ActiveMQ消息中间件面试专题.pdf Dubbo面试专题及答案(下).pdf Dubbo面试及答案(上).pdf java后端面试题答案.pdf Java基础面试题.pdf java多线程并发编程...
linux全套学习笔记_博雅运维,适合linux初学者,包含用户管理,进程管理,分区管理,vim,磁盘阵列,LVM逻辑卷,dns,ftp,nfs,samba,dhcp,apache,mysql,php,nginx,iptables,selinux,lamp,lnmp架构,phpmyadmin,...
个人学习笔记 计算机学科基础 - 数据结构和算法 数据结构 哈希表 优先队列 后缀数组 红黑树 线段树 链表 栈 二叉树 图 算法 DFS、BFS 回溯法 排序 二分搜索 DP 贪心 KMP 目录 建设中... 掌握科班必备知识 c 语言 ...
注意学习笔记HTTP权威指南TCP / IP详解卷一:协议// 1,2,3可以先看1,其中8,9章是重点深入理解Linux内核//比较难Lniux内核设计与实现//相对简单Nginx核心知识100讲深入理解Nginx;模块开发与架构解析大型网站技术...
Linux进阶篇总共包含6个章节,第9章到第14章学习内容分别包括:HTTP协议详解、Apache WEB服务器企业实战、MySQL数据库服务器企业实战、LAMP企业架构实战、Zabbix分布式监控系统实战、Nginx高性能WEB服务器实战等。...
Java架构面试专题及架构学习笔记 Dubbo服务框架面试专题及答案整理文档 BAT面试常问80题 23种设计模式知识要点整理 面试必备—API接口安全 面试必备—服务器推送技术 面试必备—匠心独运手写MyBatis框架 面试必备—...
Linux进阶篇总共包含6个章节,第9章到第14章学习内容分别包括:HTTP协议详解、Apache WEB服务器企业实战、MySQL数据库服务器企业实战、LAMP企业架构实战、Zabbix分布式监控系统实战、Nginx高性能WEB服务器实战等。...
java学生宿舍管理系统 ...微服务学习笔记系列 Go微服务实战系列 搜索引擎elasticsearch 操作系统 数据结构和算法 leetcode 树 架构模式 消息中间件 rabbitmq rocketmq 网络编程 设计模式 目录自动生成器
Linux进阶篇总共包含6个章节,第9章到第14章学习内容分别包括:HTTP协议详解、Apache WEB服务器企业实战、MySQL数据库服务器企业实战、LAMP企业架构实战、Zabbix分布式监控系统实战、Nginx高性能WEB服务器实战等。...
linux企业实战运维入门到高级系列 ubuntu Centos 面试题合集 MySQL Nginx 搭建私有Yum仓库 搭建本地第三方源epel 升级内核 脚本合集 修改自动获取ip .ubuntu换国内源 CentOS...仅用于学习交流分享,如有争议请联系下架
Linux进阶篇总共包含6个章节,第9章到第14章学习内容分别包括:HTTP协议详解、Apache WEB服务器企业实战、MySQL数据库服务器企业实战、LAMP企业架构实战、Zabbix分布式监控系统实战、Nginx高性能WEB服务器实战等。...
Linux进阶篇总共包含6个章节,第9章到第14章学习内容分别包括:HTTP协议详解、Apache WEB服务器企业实战、MySQL数据库服务器企业实战、LAMP企业架构实战、Zabbix分布式监控系统实战、Nginx高性能WEB服务器实战等。...
Linux进阶篇总共包含6个章节,第9章到第14章学习内容分别包括:HTTP协议详解、Apache WEB服务器企业实战、MySQL数据库服务器企业实战、LAMP企业架构实战、Zabbix分布式监控系统实战、Nginx高性能WEB服务器实战等。...
Linux进阶篇总共包含6个章节,第9章到第14章学习内容分别包括:HTTP协议详解、Apache WEB服务器企业实战、MySQL数据库服务器企业实战、LAMP企业架构实战、Zabbix分布式监控系统实战、Nginx高性能WEB服务器实战等。...
Linux进阶篇总共包含6个章节,第9章到第14章学习内容分别包括:HTTP协议详解、Apache WEB服务器企业实战、MySQL数据库服务器企业实战、LAMP企业架构实战、Zabbix分布式监控系统实战、Nginx高性能WEB服务器实战等。...
Linux进阶篇总共包含6个章节,第9章到第14章学习内容分别包括:HTTP协议详解、Apache WEB服务器企业实战、MySQL数据库服务器企业实战、LAMP企业架构实战、Zabbix分布式监控系统实战、Nginx高性能WEB服务器实战等。...