Tengine和Nginx的性能比较

作者: mullex
发布时间:2015-07-13 11:10:55

淘宝基于Nginx二次开发的Tengine Web服务器声称对Nginx做了众多优化,达到性能提升xx倍云云。为了验证及评估替换Nginx的必要性,笔者自行使用Apache的ab工具对Tengine和Nginx做了一次简单的性能比较

测试工具:Apache http server benchmarking tool
测试机:OS X YOSEMITE(10.10.2)
测试机内存:16G

测试服务器操作系统:CentOS 7.0.1406
测试服务器内存:2G 

测试程序Web服务器:NGINX+Netty
测试程序语言:Scala 2.10.3
测试页面:/login
测试页面css:4个独立的css文件
测试页面js:6个独立js文件
测试页面图片:6个png文件
测试页面总大小:2744字节 
 
Tengine版本:2.1.0(基于NGINX1.6.2)
NGINX版本:1.6.2
配置优化情况:都使用缺省配置


受限于测试环境和测试时间,只是简单测试了单用户单并发到100个用户5000次并发的情况。每种测试分别执行了10次取平均数。最终测试数据如下:
 
用户&并发连接 1&1 1&100 100&5000 500&5000
Web服务器 Tengine Nginx Tengine Nginx Tengine Nginx Tengine Nginx
平均响应时间(s) 0.002 0.002 0.115 0.134 4.62875 4.5275 4.76175 4.43075


测试方式
1. 为尽量保证测试结果的可靠,每种测试都进行10次,取平均值
2. 测试服务器采用VMWARE虚拟机,保证硬件配置一致
3. 每次测试完后,通过镜像snapshot功能恢复干净的测试环境
 
可得到的结论有
1. Tengine和NGINX在单用户单并发的情况下,性能没有明显差异。
2. 在单用户并发数量少例如100的情况下,Tengine具备微弱优势;而在用户量和并发数都增加的情况下,NGINX具备明显优势。

其他测试结论
1.在测试过程中还发现,当使用nginx缺省配置做前段反向代理时,比起直接用Netty做Web服务器,访问效率会下降66%
 
整个测试并不十分完善和严谨,也期待有人可以有更多时间得到更充分的测试数据。没有测试到的情况有
1. Tengine与nginx在不同页面大小和复杂度种的表现。因为Tengine声称对css,js在web服务器层面进行了合并处理,是否Tengine在特定页面表现会更加优异,比如独立css和js数量增加到一定临界点,但这点在本次测试中没有发现Tengine的优势。
2. Tengine与nginx在不同的服务器硬件环境中的性能表现。

但这些测试也足以说明,从访问效率上来看, Tengine并没有宣传的那么优秀。从稳定性考虑,使用原生态的Nginx或许是一个更佳的选择,毕竟二次开发的产品出问题的可能性要大得多。

 

标签: Nginx
来源:http://www.cnblogs.com/mullex/articles/4350039.html

推荐: