部署 Unicorn 和 Passenger open source 的简单性能对比

kikyous · 2015年12月17日 · 最后由 kikyous 回复于 2015年12月17日 · 2264 次阅读

在上个帖子 https://ruby-china.org/topics/28407 有同学问关于两个服务器的性能对此,所以就简单的做了一下测试

环境

  • centos 6
  • ruby 2.1.3
  • rails 3.2.13
  • passenger open source 5.0.22
  • nginx + unicorn 4.8.3
  • unicorn 和 passneger 都开单个进程

结果

unicorn

ab -n 100 -c 10

Requests per second:    5.56 [#/sec] (mean)
Requests per second:    5.95 [#/sec] (mean)
Requests per second:    6.06 [#/sec] (mean)
Requests per second:    6.05 [#/sec] (mean)

内存占用

deploy    3017  0.1 16.7 1207148 169636 ?      Sl   Dec15   1:12 unicorn worker[0]

passenger open source

ab -n 100 -c 10

Requests per second:    6.73 [#/sec] (mean)
Requests per second:    6.57 [#/sec] (mean)
Requests per second:    6.43 [#/sec] (mean)
Requests per second:    6.68 [#/sec] (mean)

内存占用

deploy   15916  0.6 16.1 1230948 163428 ?      Sl   Dec16   6:37 Passenger RubyApp

结论

  • 单进程下,passenger open source 性能略高于 unicorn, 相差很小 (性能瓶颈应该更多的在 mysql,io,ruby 等处)
  • passenger 开启之后需要更多的预热时间,等待passenger app preloader进程退出后,passenger woker 的 cpu 使用率一直在 10% 左右,等一直降至 0% 才算预热完毕,需要的时间比较久 (和程序有关)
  • 测试不严谨
  1. 你缺少正确调优;
  2. 你确定两个东西的进程、线程数量配置是一致的?
  3. Hello world 的测试没有价值;

Don't benchmark on OS X. OS X's TCP stack and process scheduler are horrible from a performance point of view. We recommend Linux.

https://www.phusionpassenger.com/library/config/nginx/optimization/#benchmarking-recommendations

类似这样很微小的细节(当然我知道你是在 Linux 上)

#3 楼 @huacnlee

  1. 这是生产环境,但是服务器性能有限
  2. 这两个 server 都不支持线程,worker 进程的数量都是 1 个 (在 passenger 里面设置了passenger_max_instances_per_app 1, unicorn 设置了worker_processes 1),这个可以在 ps aux 里面清楚的看到。
  3. hello world 的测试不至于平均 6req/s, 测试的都是生产环境下某网站主页
需要 登录 后方可回复, 如果你还没有账号请 注册新账号