Apache2 龙卷风是;用Python编写的相对简单、无阻塞的web服务器框架--你能解释一下这是什么意思吗?

Apache2 龙卷风是;用Python编写的相对简单、无阻塞的web服务器框架--你能解释一下这是什么意思吗?,apache2,twisted,tornado,Apache2,Twisted,Tornado,这可能是一个愚蠢的问题,但“非阻塞web服务器”到底是什么?所有web服务器在技术上都是非阻塞的,不是吗?否则,他们如何处理同步连接?Apache2使用fork()和pthread的组合来实现这一点。龙卷风(和扭曲的龙卷风)到底有什么不同?他们是否只是将一堆套接字设置为非阻塞模式,构建一个FD列表(或等效列表),然后通过一个大的select()sys调用循环 您将在何处使用这样的框架,与Apache2(或其他流行服务器)相比,它们能给您带来哪些优势?谢谢这也可能给你一个提示: 沉浸在分叉的传统中

这可能是一个愚蠢的问题,但“非阻塞web服务器”到底是什么?所有web服务器在技术上都是非阻塞的,不是吗?否则,他们如何处理同步连接?Apache2使用fork()和pthread的组合来实现这一点。龙卷风(和扭曲的龙卷风)到底有什么不同?他们是否只是将一堆套接字设置为非阻塞模式,构建一个FD列表(或等效列表),然后通过一个大的select()sys调用循环

您将在何处使用这样的框架,与Apache2(或其他流行服务器)相比,它们能给您带来哪些优势?谢谢

这也可能给你一个提示:

沉浸在分叉的传统中/ 我自己发现的线程化web服务器 当我加入其中一个 大学研究项目 几年前的滑铁卢:我们 我们正在对不同的web服务器进行基准测试 体系结构,表现最好的是 所有事件驱动服务器

当我向每个人提出问题时, 我很快意识到了原因——在一个小时内 拥有数十万人口的环境 请求第二个、分叉和上下文 与线程关联的交换 管理变得令人望而却步 昂贵(叉子是表现最差的,如 它在父级上执行内存复制 每次处理)。鉴于 相比之下,这是一个紧密而高度的关系 优化的事件循环真的很出色 当涉及到性能时 重载


谢谢,我想知道事件循环select()/epoll()体系结构(我几年前在一本TCP书籍中读到过这方面的内容)有什么了不起的地方,以及为什么它可能比线程更好。