nginx 子进程调度

       在linux 下,nginx默认是采用多进程模型的,其中一个是父进程,其他都是子进程,父进程主要做一些全局初始化、调度等工作,而真正的处理时在子进程中完成的,那么当一个请求过来的时候,到底有那个进程去服务呢?

      我看了代码,还是没有找到答案,后来在网上发现了这篇文章<<Nginx0.7.61代码分析(二)--worker子进程之间的负载均衡>>,终于揭开了我心中的疑问。系统根据没有进程已有的链接数来进程调度的。

 

       这里对相关的问题进行总结:

       一  子进程可以继承父进程的socket的,所以如果在父进程中启动了监听的socket后,在子进程中直接进行accept, 这个就是nginx使用的方法。

 

       二 nginx其实不是很好的调度算法,它只是对于负担比较重的进程,不给他们分配任务,所以在任务不是很多的时候,这个算法并不是很好。

 

 

       下面自己写了一个简单的程序,父进程启动监听进程,子进程进程accept,利用共享内存,实现进程之间的通信,使他们轮流执行任务。

 

 

我们启动服务,在客户端输入

 

ab -n 1000 -c 100  http://ip:9999/

 

可以看到在服务器端,两个进程交替处理请求

my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707
my pid is 5708
my pid is 5707

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值