免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1468 | 回复: 2
打印 上一主题 下一主题

请教一个服务器架构的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-11 13:49 |只看该作者 |倒序浏览
最近听说很多Web服务器是采用多进程+Epoll或者多线程+Epoll.我的理解是每个请求进来了FORK一个进程,然后在那个进程里使用Epoll.但是那个进程只有一个描述符需要处理啊,为啥要Epool呢?不知道我表达清楚我的疑虑没,有没大侠写点简短的伪代码说明一下这个问题。


__________________________________________________

int fd;
int sock_fd;

while(1) {
    fd = accept(........);
    if (fork() == 0) {
        Epoll(.........)
   }
   else {
       close(fd)
   }
}

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
2 [报告]
发表于 2009-10-11 14:09 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2009-10-11 20:36 |只看该作者
原帖由 c/unix 于 2009-10-11 14:09 发表
你这个列子是最原始的多进程并发服务,每连接FORK一个进程处理。

举个进程池列子:

主进程创建n个子进程,主进程负责accept,传递给子进程处理。

子进程开EPOOL可能需要处理至少2个描述符:
一个是和 ...

epoll直接处理监听和连接fd,当然,如果考虑提高性能,可以使用多进程/线程,把收到的数据交给工作进程/线程来处理,主进程/线程只做数据转发。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP