首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Unicorn跟Passenger性能测试对比

2012-10-26 
Unicorn和Passenger性能测试对比测试工具:ab?测试用例:1.短连接2.长连接?APP:class App Sinatra::Applic

Unicorn和Passenger性能测试对比

测试工具:ab

?

测试用例:

1.短连接

2.长连接

?

APP:

class App < Sinatra::Application        get '/' do            "HELLO "+Time.now.to_s        end         get '/sleep' do            sleep 5            "HELLO "+Time.now.to_s        endendrun App.new

?

测试环境:

Unicorn:

100进程,

写道[zheng.cuizh@localhost tbMemberServer]$ ps axf|grep unicorn -c
102?

8080端口

Passenger:

基于nginx

100进程,

写道[zheng.cuizh@localhost tbMemberServer]$ ps axf|grep nginx -c
102
?

8081端口

?

测试结果:

场景1:

ab -c 100 -n 10000 10.1.166.138:8080/ => rps:1634

ab -c 100 -n 10000 10.1.166.138:8081/ => rps:1318

场景2:

ab -c 100 -n 100 10.1.166.138:8080/sleep?vcatwbwrge => rps:19.65

ab -c 100 -n 100 10.1.166.138:8081/sleep?v34rnjnf9 => rps:1.17

?

结果比较,unicorn比passenger性能看似好很多,但我不清楚如何关闭缓存,我对这两个东西的配置还不是很熟悉,所以我猜测在测试过程中可能会有读取缓存页的情况,这会使得测试结果看起来速度更快。

?

不过passenger基于nginx,所以支持的并发访问数要比unicorn高,比如测试1000并发的第二个场景时,unicorn出现socket closed by peer的提示,然后ab终止,passenger没出现这个问题。实际生产环境unicorn不会出现在部署的最前端,也会用nginx作一层代理。

?

不管性能哪个更好,希望ruby的库们越来越优秀,越来越丰富。

?

ps:谁告诉我一下这两个server如何关闭cache?比如我用ab的话不能对每次url请求都生成一个随机数,这时候就需要关闭server的缓存。

1 楼 QuakeWang 2011-05-03   我以前用 Autobench 测试过Passenger + Nginx, Thin + Nginx 和 Fastcgi + Lighttpd,我测试的是每秒30个请求开始,然后最高到180个请求,测试环境Ruby 1.9.2+Ubuntu Server。

Fastcgi的响应时间稍微比Passenger和Thin要快一点点,可以说3者在性能上的差异极小,但是在内存使用上Thin最少,而Passenger胜在部署和维护方便。 综合考虑我推荐Passenger+Nginx。 2 楼 易卡螺丝君 2011-05-04   Passenger+Nginx
在性能方面差据不到5%
维护和部署方面有30%以上优势 你说选谁? 3 楼 CharlesCui 2011-05-04   易卡螺丝君 写道Passenger+Nginx
在性能方面差据不到5%
维护和部署方面有30%以上优势 你说选谁?

什么5%?
维护和部署方面的30%这个数据是谁测试出来了?

不理解。 4 楼 Hooopo 2011-05-04   CharlesCui 写道易卡螺丝君 写道Passenger+Nginx
在性能方面差据不到5%
维护和部署方面有30%以上优势 你说选谁?

什么5%?
维护和部署方面的30%这个数据是谁测试出来了?

不理解。

是啊,这个怎么测的
5 楼 CharlesCui 2011-05-04   Hooopo 写道CharlesCui 写道易卡螺丝君 写道Passenger+Nginx
在性能方面差据不到5%
维护和部署方面有30%以上优势 你说选谁?

什么5%?
维护和部署方面的30%这个数据是谁测试出来了?

不理解。

是啊,这个怎么测的


虎扑现在混哪里的?记得前震子你还在东北呢,怎么现在到北京了。 6 楼 night_stalker 2011-05-04   unicorn 也很好维护啊,通过 signal 控制,信号和 nginx 很相似,发个信号就能热部署,热部署的时候没有请求 queue 延迟的问题 (用posix函数实现的load balancing就比你们自己搞的global queue好用??)

unicorn 的进程维护应该比较优才对。可以设置请求后才进行 gc(tps会下降但是用户体验效果很好),可以自动杀超时进程,可以动态增加减少 worker ??
7 楼 t0uch 2011-05-05   unicorn相当不错。
使用passenger要编译nginx这一点很不爽。
unicorn部署可以让用户感觉不到延迟,这一点很牛,signal控制起来也很方便。 8 楼 t0uch 2011-05-05   易卡螺丝君 写道Passenger+Nginx
在性能方面差据不到5%
维护和部署方面有30%以上优势 你说选谁?
这里的所谓5%和30%从哪里来的呢?还是你随便说说的? 9 楼 mamba 2011-05-05   t0uch 写道unicorn相当不错。
使用passenger要编译nginx这一点很不爽。
unicorn部署可以让用户感觉不到延迟,这一点很牛,signal控制起来也很方便。

强烈同意, 我从 passenger 切换到 unicorn 的唯一原因就是 passenger 需要编译 nginx 10 楼 kiol 2011-05-05   Unicorn是直接部署到前端吗?
还是前面再加nginx做反向代理?
11 楼 night_stalker 2011-05-05   unicorn还有个好处是100% ruby,实现比passenger简单

一般前面再加nginx(unicorn不是设计来处理静态文件的,用unix socket或者端口代理都可以, unicorn源码中带nginx配置的example : https://github.com/defunkt/unicorn/blob/master/examples/nginx.conf),有特殊需求不加也可以??
12 楼 CharlesCui 2011-05-06   kiol 写道Unicorn是直接部署到前端吗?
还是前面再加nginx做反向代理?


生产环境上要加nginx,
测试开发环境,或者生产环境只有一台server的话,我就直接用unicorn了,

别的同学怎么用的? 13 楼 zires 2011-05-07   night_stalker 写道unicorn 也很好维护啊,通过 signal 控制,信号和 nginx 很相似,发个信号就能热部署,热部署的时候没有请求 queue 延迟的问题 (用posix函数实现的load balancing就比你们自己搞的global queue好用??)

unicorn 的进程维护应该比较优才对。可以设置请求后才进行 gc(tps会下降但是用户体验效果很好),可以自动杀超时进程,可以动态增加减少 worker ??


热部署很好用
我在生产环境中也使用unicorn + nginx
关于维护和部署方面是用capistrano来管理unicorn也很方便啊

热点排行