基于EPOLL+多进程+线程池的server框架设想
来源:互联网 发布:带着淘宝去古代 编辑:程序博客网 时间:2024/05/22 03:45
最近,看了几个开源代码的server框架,有了一些自己的想法,把它记下来。
针对server要求高性能的同时还需要稳定性的特点,有了这样一个构思,建立一个EPOLL+多进程+线程池的server框架,暂且叫它emptyServer(e:epoll,m:muti,p:process,t:thread,y:ycc.哈哈)。
考虑的出发点如下:
(1) 为什么用epoll?
众所周知的原因,这里就不多说了。
(2) 为什么使用多进程模型?
在emptyServer框架中,多进程的想法来源于apache和lighttpd。它的作用是多个进程共享监听socket,当有连接过来时,唤醒其中一个进程处理,这样可以保证了emptyServer的稳定性,又可以提高emptyServer的处理能力。
也许,大家会想,这不就会引起“惊群”问题了吗?linux2.4以后的内核版本,已经解决了“惊群”问题,所以不需要担心“惊群”影响性能。
注:“惊群”问题,多进程共享监听socket,当有请求过来时,系统会唤醒所有的进程,从而造成系统颠簸使性能严重下降。
(3) 为什么要使用线程池?
线程池的作用:线程处理具体的逻辑,不参与主线程的网络IO,通过socketpair与主线程交互。
使用线程是基于以下的考虑:
1) 对于耗时比较长的逻辑,如数据库访问、复杂数值计算等,如果不启用另外的线程处理,主线程就会把时间都花在处理逻辑上,就会影响网络IO的处理和其它请求的逻辑处理,从而影响整体性能。
2) 现在的服务器基本上都是多核多cpu的,通过多线程,可以把线程映射到不同的cpu去执行,充分利用多核多cpu的处理能力。
下面,给出一个粗略的流程图,打算8月初开始实现emptyServer。
- 基于EPOLL+多进程+线程池的server框架设想
- 基于epoll的web server
- epoll+进程池+线程池
- SPServer : 一个基于线程池(包括HAHS和LF)的高并发 server 框架
- SPServer : 一个基于线程池(包括HAHS和LF)的高并发 server 框架
- SPServer : 一个基于线程池(包括HAHS和LF)的高并发 server 框架
- 前端服务器框架---EPOLL+线程池
- 4种简单的echo server——简单阻塞型,多进程,多线程,epoll
- 一个简单的基于epoll的web server
- 一个简单的基于epoll的web server
- epoll的一个demo,备忘(epoll+线程池)
- 转 epoll的一个demo(epoll+线程池)
- 一个基于Event Poll(epoll)的TCP Server Framework,浅析epoll
- 一个基于Event Poll(epoll)的TCP Server Framework,浅析epoll
- 多进程并发编程----基于高级的预先创建进程池(accept使用线程上锁)的模型
- Socket Server-基于线程池的TCP服务器
- 基于Selector+Channel+线程池的server & client
- 基于SAAS开发平台的设想
- 评论:26岁成都唐爽发现成果惊动奥巴马--意外发现新材料极可能成下一代电脑芯片
- 选择条件语句_if结构
- 追MM与Java的23种设计模式
- 选择条件语句if_else结构
- 多重if结构
- 基于EPOLL+多进程+线程池的server框架设想
- vs2010 安装mvc3
- VC 如何添加服务
- [mssql]字符串移除指定长度字符
- IfelseTest2
- 各开源项目 源码 svn 地址
- IfelseTest1
- asp.net写入web.config
- 【记录】【总结】聊天模块