Lighttpd、nginx和其他公司使用一系列技术来提供最大的应用程序性能,如AIO、sendfile、MMIO、缓存、epoll和免锁数据结构。
我和我的同事编写了一个小型应用程序服务器,它使用了许多这些技术,也可以为静态文件提供服务器。因此,我们用apachebench进行了测试,并将我们的测试与lighttpd和nginx进行了比较,至少在100字节到1K的文件的静态内容方面达到了匹配的性能。
然而,当我们将相同静态文件的事务速率与G-WAN的事务速率进行比较时,G-WAN遥遥领先。
我知道这个问题可能有点主观,但除了我提到的那些显而易见的技术之外,Pierre Gauthier在GWAN中可能会使用什么技术,使他能够取得如此惊人的表现?
多年来,我一直关注G-WAN服务器,在旧的G-WAN论坛上读到了(许多)关于这个问题的演讲。
据我记忆所及,被反复提及的是程序:
- 架构(与nginx、lighty和切诺基进行了具体比较)
- 实现(如何进行整体分支、请求解析和响应构建)
- 精简公共路径(所有类型的请求所遵循的路径:动态、静态、处理程序)
Pierre经常提到其他服务器来解释在其特定体系结构和实现中是什么导致了它们的速度减慢。
随着时间的推移,由于G-WAN似乎堆叠了越来越多的功能(下一个版本预计会支持C#脚本、反向代理和负载均衡器),因此以上三点似乎越来越重要。
这可能就是为什么G-WAN的每一个新版本似乎都愿意比以前更快:你做的工作越多,就必须消除更多的额外脂肪,因为它的成本越来越高。就像赛车或飞机一样,这是一个渐进的过程,一个需要更多的另一个。
如果你正在寻找G-WAN速度的"秘密",那么我想这是关键点。但是,如果你想要更多的细节,那么你应该直接与G-WAN的作者交谈。
查看G-WAN的时间表。2011年8月8日的更新可能会让你知道他在用什么。
G-WAN时间表
Pierre提到,G-WAN在G-WAN的核心功能上大量使用其免等待密钥值存储。由于没有使用锁,因此速度更快。
他还使用了洛伦茨水车启发的技术来处理线程。我不确定它是如何工作的,但他说它可以让G-WAN在任何可能的情况下运行得更快。