首页 >

[读书笔记]1_初探nginx架构_2_事件处理机制何来高并发

后端开发|php教程[读书笔记]1_初探nginx架构_2_事件处理机制何来高并发
worker,epoll,nginx,numbering,cpu
后端开发-php教程
原文:http://tengine.taobao.org/book/chapter_02.html
avi 生成 gif 源码,ubuntu系统放大,Tomcat 连接池满了,爬虫的编法,php基金会对php的发现影响,荥阳市网络seo平台有哪些lzw
nginx采用多worker的方式来处理请求,每个worker里面只有一个主线程,那能够处理的并发数很有限啊,多少个worker就能处理多少个并发,何来高并发呢?
vip共享单页源码,ubuntu查看所有服务,爬虫软件分析淘宝,php inval,蒙自网站seolzw
nginx采用了异步非阻塞的方式来处理请求,而这种异步非阻塞的事件处理机制,具体到系统调用就是像select/poll/epoll/kqueue这样的系统调用。它们提供了一种机制,让你可以同时监控多个事件,调用他们是阻塞的,但可以设置超时时间,在超时时间之内,如果有事件准备好了,就返回。
验证源码,vscode左边小鲸鱼图标,ubuntu在root,tomcat修改页面图标,爬虫世界直播,php svg png,信息化seo优化价值,WAP手机网站模板asp版下载,跨进电商模板一lzw
拿epoll为例(在后面的例子中,我们多以epoll为例子,以代表这一类函数)

当事件没准备好时,放到epoll里面事件准备好了,我们就去读写当读写返回EAGAIN时,我们将它再次加入到epoll里面。

这样,只要有事件准备好了,我们就去处理它,只有当所有事件都没准备好时,才在epoll里面等着。这样,我们就可以并发处理大量的并发了。

当然,这里的并发请求,是指未处理完的请求,线程只有一个,所以同时能处理的请求当然只有一个了,只是在请求间进行不断地切换而已,切换也是因为异步事件未准备好,而主动让出的。这里的切换是没有任何代价,你可以理解为循环处理多个准备好的事件,事实上就是这样的。与多线程相比,这种事件处理方式是有很大的优势的,不需要创建线程,每个请求占用的内存也很少,没有上下文切换,事件处理非常的轻量级。并发数再多也不会导致无谓的资源浪费(上下文切换)。

更多的并发数,只是会占用更多的内存而已。

之前提到的worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致,这里面的原因与nginx的进程模型以及事件处理模型是分不开的。

这里推荐设置worker的个数为cpu的核数,在这里就很容易理解了,更多的worker数,只会导致进程来竞争cpu资源了,从而带来不必要的上下文切换。而且,nginx为了更好的利用多核特性,提供了cpu亲缘性的绑定选项,我们可以将某一个进程绑定在某一个核上,这样就不会因为进程的切换带来cache的失效。像这种小的优化在nginx中非常常见,同时也说明了nginx作者的苦心孤诣。比如,nginx在做4个字节的字符串比较时,会将4个字符转换成一个int型,再作比较,以减少cpu的指令数等等。

‘).addClass(‘pre-numbering’).hide();
$(this).addClass(‘has-numbering’).parent().append($numbering);
for (i = 1; i <= lines; i++) { $numbering.append($('').text(i)); }; $numbering.fadeIn(1700);}); });

以上就介绍了[读书笔记]1_初探nginx架构_2_事件处理机制何来高并发,包括了方面的内容,希望对PHP教学有兴趣的朋友有所帮助。


[读书笔记]1_初探nginx架构_2_事件处理机制何来高并发
  • Nginx在Window下的使用笔记
  • Nginx在Window下的使用笔记 | Nginx在Window下的使用笔记 ...

    [读书笔记]1_初探nginx架构_2_事件处理机制何来高并发
  • Nginx的数据结构--整型和字符串
  • Nginx的数据结构--整型和字符串 | Nginx的数据结构--整型和字符串 ...

    [读书笔记]1_初探nginx架构_2_事件处理机制何来高并发
  • nginx 反向代理和正向代理区别
  • nginx 反向代理和正向代理区别 | nginx 反向代理和正向代理区别 ...