其实很多人做性能测试的时候,使用的方法都很粗糙,很多因素都没有考虑,只是单纯的使用ab,就得出nginx比apache多多少多少倍等类似的结论,好笑。
就拿nginx和apache比较而言吧,首先说一下nginx在linux工作于epoll模式,而apache默认是prefork工作模式,这个本来就没法比。但apache (MPM=event)工作模式就是采用epoll的机制,相同工作模式下比较才有意义啊。另一个一般web服务都支持pipeline(keep alive on/off)c传输模式,默认值各不相同,测试首先保证相同的传输模式(keep alive on 或 keep alive off)下进行啊,一股脑的测试,得出所谓的结论,能准确么?只能说经验过浅阿,另外,性能测试还受制于硬件环境/网络带宽/是否本机测试还是远程测试/测试内容/测试数据大小等等。
硬件环境不同,测试结论肯定不同,这个很简单。
网络带宽不同带来的影响,有些情况在100Mb/s下,1000Mb/s,TPS还是有很大差异的。
是否本机测试,直接对本机所谓的测试是不经过network,往往TPS会很高。
测试内容,动态/静态之间的差异我就不提了,静态内容一般是会被cache掉的,动态内容某个情况也会cache,TPS还是不算准确。
测试数据大小,这个一两句话说不清楚,如下图:(带宽/TPS/Object Size)关系,很有用的。
[img]http://haproxy.1wt.eu/img/bench.png[/img]
关于传输模式keep alive on/off的说明,我找到一片老外的测试结果。
[quote]
Tests were made on my desktop PC (Intel Core2 CPU 6700 @ 2.66GHz) inside VMWare environment (memory: 256 MB, Debian Etch) with apache-benchmark tool, fetching 32 B long static text file.
Compared versions (configuration files will follow soon):
Apache 1.3.34
Apache 2 (worker) 2.2.3
Litespeed 3.3.4
thttpd 2.23beta1-5
Nginx 0.5.35
Lighttpd 1.4.13
Cherokee 0.5.5
Boa 0.94.14rc21-0.2
Keep Alive On
[img]http://blog.arh.cc/uploads/2008-02-13_webservers_benchmark/keepalive_on.png[/img]
Keep Alive Off
[img]http://blog.arh.cc/uploads/2008-02-13_webservers_benchmark/keepalive_off.png[/img]
[/quote]
单说他的测试结果无论如何,至少,人家还知道Keep Alive On/Off的差异,分开比较。
就拿nginx和apache比较而言吧,首先说一下nginx在linux工作于epoll模式,而apache默认是prefork工作模式,这个本来就没法比。但apache (MPM=event)工作模式就是采用epoll的机制,相同工作模式下比较才有意义啊。另一个一般web服务都支持pipeline(keep alive on/off)c传输模式,默认值各不相同,测试首先保证相同的传输模式(keep alive on 或 keep alive off)下进行啊,一股脑的测试,得出所谓的结论,能准确么?只能说经验过浅阿,另外,性能测试还受制于硬件环境/网络带宽/是否本机测试还是远程测试/测试内容/测试数据大小等等。
硬件环境不同,测试结论肯定不同,这个很简单。
网络带宽不同带来的影响,有些情况在100Mb/s下,1000Mb/s,TPS还是有很大差异的。
是否本机测试,直接对本机所谓的测试是不经过network,往往TPS会很高。
测试内容,动态/静态之间的差异我就不提了,静态内容一般是会被cache掉的,动态内容某个情况也会cache,TPS还是不算准确。
测试数据大小,这个一两句话说不清楚,如下图:(带宽/TPS/Object Size)关系,很有用的。
[img]http://haproxy.1wt.eu/img/bench.png[/img]
关于传输模式keep alive on/off的说明,我找到一片老外的测试结果。
[quote]
Tests were made on my desktop PC (Intel Core2 CPU 6700 @ 2.66GHz) inside VMWare environment (memory: 256 MB, Debian Etch) with apache-benchmark tool, fetching 32 B long static text file.
Compared versions (configuration files will follow soon):
Apache 1.3.34
Apache 2 (worker) 2.2.3
Litespeed 3.3.4
thttpd 2.23beta1-5
Nginx 0.5.35
Lighttpd 1.4.13
Cherokee 0.5.5
Boa 0.94.14rc21-0.2
Keep Alive On
[img]http://blog.arh.cc/uploads/2008-02-13_webservers_benchmark/keepalive_on.png[/img]
Keep Alive Off
[img]http://blog.arh.cc/uploads/2008-02-13_webservers_benchmark/keepalive_off.png[/img]
[/quote]
单说他的测试结果无论如何,至少,人家还知道Keep Alive On/Off的差异,分开比较。