首页 > 其他 > 详细

服务器端预先创建子进程(work)同时监听服务端口和惊群现象

时间:2014-03-21 17:51:43      阅读:287      评论:0      收藏:0      [点我收藏+]

背景

原文链接: http://blog.csdn.net/ordeder/article/details/21721141

1.进程A在n端口上监听,即调用listen(listenfd,backlog);

2.之后A调用fork产生子进程B,此时B拷贝了A的listenfd,该描述符使用的是相同的“文件表项”(具体参考 http://blog.csdn.net/ordeder/article/details/21716639)

3.那么A进程和B进程将共享一个socket,具体图解如下:

bubuko.com,布布扣

惊群现象        

        在该模型下(多个子进程同时共享监听套接字)即可实现服务器并发处理客户端的连接。这里要注意的是,计算机三次握手创建连接是不需要服务进程参数的,而服务进程仅仅要做的事调用accept将已建立的连接构建对应的连接套接字connfd(可参考 http://blog.csdn.net/ordeder/article/details/21551567)。多个服务进程同时阻塞在accept等待监听套接字已建立连接的信息,那么当内核在该监听套接字上建立一个连接,那么将同时唤起这些处于accept阻塞的服务进程,从而导致“惊群现象”的产生,唤起多余的进程间影响服务器的性能(仅有一个服务进程accept成功,其他进程被唤起后没抢到“连接”而再次进入休眠)。

服务器端预先创建子进程(work)同时监听服务端口和惊群现象,布布扣,bubuko.com

服务器端预先创建子进程(work)同时监听服务端口和惊群现象

原文:http://blog.csdn.net/ordeder/article/details/21721141

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!