这可能是一个愚蠢的问题,但究竟什么是"非阻塞Web服务器"?所有的Web服务器在技术上都是非阻塞的,不是吗?否则他们怎么能处理同时连接?Apache2使用fork()和pthreads的组合实现了这一点.龙卷风(和Twisted)究竟有何不同?他们只是将一堆套接字设置为非bocking模式,构建FD列表(或等效的),然后使用一个大的select()sys调用来循环它吗?
你会在哪里使用这样的框架,以及它们可以通过Apache2(或其他流行的服务器)给你带来什么好处?谢谢
Tri*_*tan 12
关于EventMachine的这篇文章也可能会给你一个提示:
沉浸在分叉/线程网络服务器的传统中,当我几年前加入滑铁卢大学的一个研究项目时,我发现自己感到非常惊讶:我们对不同的网络服务器架构进行了基准测试,而且表现最好的是所有事件 - 驱动服务器.
当我用问题纠缠每个人时,我很快意识到为什么 - 在一个拥有数十万个请求的环境中,与线程管理相关的分叉和上下文切换变得非常昂贵(fork表现最差,因为它在父进程上执行内存复制每次).相比之下,紧凑且高度优化的事件循环在重负载下的性能方面确实令人眼前一亮.
| 归档时间: |
|
| 查看次数: |
2577 次 |
| 最近记录: |