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来管理线程池,实现高并发。

推荐阅读更多精彩内容

  • 1. Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单...
    rosekissyou阅读 9,070评论 5 124
  • Q2:我有款产品上架已经3周了,刚做了淘客900单(本来预算是500单的),请问我该怎么维护淘客进来的流量?怎么做...
    九月鹰1飞阅读 50评论 0 0