我不仅从学术角度而非实际角度对此感兴趣;我不打算创建一个生产网络服务器来与Nginx竞争.我想知道的是Nginx究竟是如此之快.最热门的谷歌回应是this线程,但它只链接到一个神秘的幻灯片和不同的io策略的一般覆盖.所有其他结果似乎只是简单描述了Nginx的速度,而不是原因.
我尝试构建一个简单的erlang服务器来尝试与Nginx竞争,但无济于事; Nginx赢了.我的所有服务器都为每个请求生成一个新进程,使用该进程将文件读取到套接字,然后关闭文件并终止该线程.这并不复杂,但考虑到erlang的轻量级进程和底层的aio结构,我认为它会竞争,但在重压力测试下,Nginx仍能以300毫秒的平均值获胜.
什么是Nginx做我的简单服务器不是?我的第一个想法是将文件保存在主内存中,而不是在请求之间抛出它们,但文件系统缓存已经这样做了,所以我认为它不会产生那么大的差别.我错了吗?或者还有其他我想念的东西?
最佳答案