Kitura的多线程

在Nginx中,由Master进程管理多个Worker进程,而每一个连接是由一个Worker进程处理的。Nginx没有像PHP-FPM那样才用Master进程分发请求,而是由操作系统内核机制完成(内置负载均衡算法),再通过Mutex来避免“惊群”现象。

Worker进程的数量一般会和机器CPU核数一致。每个进程通过Reactor的事件处理机制,实现了循环处理多个准备好的事件。这样处理的优点在于无需创建线程,没有上下文切换,最大化利用CPU。这样处理方式的缺点在于,Reactor是同步的处理方式,因此服务器在处理长时间IO操作时会阻塞其他链接。

Nginx在1.7.11中引入了AIO线程池技术,如此大文件可以用AIO线程池,小文件可以直接sendfile。


Kitura利用了Apple的GCD来管理线程池,实现高并发。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,781评论 24 1,002
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 2,050评论 0 9
  • Q2:我有款产品上架已经3周了,刚做了淘客900单(本来预算是500单的),请问我该怎么维护淘客进来的流量?怎么做...
    无趣的网虫阅读 171评论 0 0