分享 Puma 替换 Unicorn 跑 Gitlab

icyleaf · 2014年01月26日 · 最后由 wangxing 回复于 2015年11月19日 · 6371 次阅读

之前看到 ruby-china 替换了 puma,看到性能评测确实有很高的提升,于是把 gitlab 也做了替换,希望对小内存的朋友有帮助 :)

http://icyleaf.com/2014/01/moving-unicorn-to-puma-on-gitlab/

现在 discourse 也可以用 Puma 跑了……Puma 的压力负载比 Unicorn 实在好太多……

UNICORN - 1076 Mb 这句话怎么理解,感觉不科学阿,我 512M 内存照样跑了,只是只有一个 worker.. ubicorn 本身只有 300M 左右吧,1G 内存至少可以起 3 个 rails app 了。。

#2 楼 @small_fish__ 那只是平均内存占有量,300M 只是 app server 本身,加上其他的负载肯定带不了那么多 app 的。

#3 楼 @icyleaf 那 puma 70M 又怎么理解呢?

不会有 300-500M,一般 200M 以内,180M 左右,unicorn 进程

#5 楼 @kenshin54 呃,说错了,我看了下命令历史,是整个 ruby 进程占了 400M 多。抱歉!

#2 楼 @small_fish__ #5 楼 @kenshin54 乃们可以压力测试一下………我上次 ab 测试并发 1000,3 个 worker 内存飙了 3G 然后宕机了…

#7 楼 @cassiuschen puma 用的时间也不算太长,官方说 puma 配合 jruby 是比较不错的,MRI 的 GIL 机制限制。我觉得 puma 的优势在于前期的内存占用率以及相应速度非常快。小型的应用及服务器资源可以考虑。

实物图 这是我的 gitlab 跑了 31 天的结果 用户大约 50 人 用的是 puma 2 进程 8-32 线程

顺路提供一个 puma 的启动脚本 可以替换原来的 init.d https://gitcafe.com/zj0713001/gitlabhq-spic/blob/master/lib/support/init.d/gitlab_puma

#8 楼 @icyleaf 而且抗压能力确实不错,但是相比 unicorn 功能相对简单……

#10 楼 @cassiuschen 才出来的应用,之前没升级到 2.0 的时候都没有多进程,可以怀着期待的新看看能有怎样的成长嘛

Gitlab 有些地方不是线程安全的,最好不要盲目换成 Puma,可能会出现一些问题。

PS:Gitlab 官方曾经把 Unicorn 换成 Puma 过,后来又恢复回去了。

@icyleaf 你什么时候也开始玩 ruby 了。。。😳

#11 楼 @icyleaf Puma 从 2.6 开始才真正敢在生产环境用……期待吧…

#12 楼 @tsl0922 #14 楼 @cassiuschen

小部分使用 gitlab,没什么大碍 XD

#13 楼 @fredwu 一直都想没机会嘛。要不跟你混吧 =w=

[owhat@owhat-test current]$ bundle exec puma -e production -b unix:///mnt/webserver/www/owhat-web/shared/tmp/sockets/puma.sock /mnt/webserver/www/owhat-web/releases/4/vendor/bundle/ruby/2.2.0/gems/puma-2.15.3/lib/puma/cli.rb:195:in `chdir': No such file or directory @ dir_chdir - /mnt/webserver/www/owhat-web/owhat/current (Errno::ENOENT) 遇到点问题,请教一下是什么 原因造成的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号