Tornado是“一个用Python编写的相对简单,无阻塞的Web服务器框架” - 可以解释一下这意味着什么?
题
这可能是一个愚蠢的问题,但究竟什么是“非阻止网络服务器”?所有的Web服务器在技术上都是非阻塞的,不是吗?否则他们怎么能处理同时连接? Apache2使用fork()和pthreads的组合实现了这一点。龙卷风(和Twisted)究竟有何不同?他们只是将一堆套接字设置为非bocking模式,构建FD列表(或等效的),然后通过一个大的select()sys调用来循环它吗?
您将在哪里使用这样的框架,以及它们可以通过Apache2(或其他流行的服务器)提供哪些优势?感谢
解决方案
有关EventMachine的文章也可以给你一个提示:
沉浸在分叉的传统中/ 线程网络服务器我发现自己 当我加入其中一个时相当惊讶 大学的研究项目 几年前滑铁卢:我们 正在对不同的Web服务器进行基准测试 建筑和表现最佳的人 所有事件驱动的服务器。
当我用问题纠缠每个人时, 我很快意识到为什么 - 在一个 环境有数十万 请求第二个,分叉和上下文 与线程相关的切换 管理变得令人望而却步 昂贵(叉子表现最差,如 它在父级上执行内存复制 每次处理)。然而 比较,紧张而且高度 优化的事件循环真的很闪耀 谈到绩效 重负荷。
不隶属于 StackOverflow