我对此感兴趣,但更多是从学术角度而不是实际角度;我不打算创建一个生产Web服务器来与Nginx竞争。我想知道的是Nginx为什么如此快速。谷歌搜索结果中排名最高的是这个帖子,但它只是链接到一个神秘的幻灯片和一般性的涵盖不同io策略的说明。所有其他结果似乎只是描述了Nginx有多快,而没有解释原因。
我尝试构建一个简单的Erlang服务器来尝试与Nginx竞争,但无济于事; Nginx获胜。我的服务器所做的全部工作就是为每个请求生成一个新进程,使用该进程将文件读取到套接字中,然后关闭文件并终止线程。虽然这并不复杂,但考虑到Erlang的轻量级进程和底层aio结构,我认为它应该能够竞争,但在重压力测试下,Nginx仍然以平均300毫秒的优势获胜。
Nginx正在做什么,而我的简单服务器没有做到?我的第一个想法是将文件保存在主内存中,而不是在请求之间抛弃它们,但是文件系统缓存已经实现了这一点,因此我认为它不会有太大的差异。我错了吗?还是我遗漏了其他的东西?
我尝试构建一个简单的Erlang服务器来尝试与Nginx竞争,但无济于事; Nginx获胜。我的服务器所做的全部工作就是为每个请求生成一个新进程,使用该进程将文件读取到套接字中,然后关闭文件并终止线程。虽然这并不复杂,但考虑到Erlang的轻量级进程和底层aio结构,我认为它应该能够竞争,但在重压力测试下,Nginx仍然以平均300毫秒的优势获胜。
Nginx正在做什么,而我的简单服务器没有做到?我的第一个想法是将文件保存在主内存中,而不是在请求之间抛弃它们,但是文件系统缓存已经实现了这一点,因此我认为它不会有太大的差异。我错了吗?还是我遗漏了其他的东西?