Rails 阿里云上的 rails server 过一会就关闭了

birbird · 2013年09月22日 · 最后由 birbird 回复于 2013年09月23日 · 5377 次阅读

网站放在阿里云上,每隔几个小时就不能访问了,ssh 过去一看,WEBrick 进程已经不存在了,重新 rails server 就好了,但管不了几个小时又挂了。这是啥情况啊,知道请指点,谢啦先!

看 log。

#1 楼 @jjzxcc log 看过了,并无异常啊,log 的末尾都是正常的,是处理请求的记录。然后,就没有然后了……

监控内存大小 内存顶满了的话会出现 kill 进程的情况

WEBrick ? 你确定要用这个?

#4 楼 @jimrokliu 我知道这个不应该用在生产环境中。但我是新手,以前没搞过 Server 开发,而且需求也简单,想先让他能用着,以后再来改。

1.看系统日志,而不是网页服务器的日志,看看进程是不是资源不足被杀了. 2.换个 Web Server,比如thin. 3.这问题和阿里云无关。

先查 syslog

#3 楼 @zj0713001 守着看了会内存,内存也不会随访问有大变化,一直都是剩 100 多 M 的样子,这样有问题么

             total       used       free     shared    buffers     cached
Mem:           490        370        119          0         18        206
-/+ buffers/cache:        144        345
Swap:            0          0          0

#6 楼 @046569 #7 楼 @chaixl 多谢指点!

我到 /var/log 里去搜 ruby,rails 这些词,也没有啥有意义的发现,用的命令是

grep -r "rails" *

这样有问题么

可能是内存不够,我之前 512M 内存跑 rails+mysql+wordpress,mysql 也是经常被系统杀掉

#8 楼 @birbird 用 newrelic 的服务器监控看看吧 其实剩 100 多 M 挺危险的...rails 突发 100M 的占用 也就只需要 10s

sudo cat /var/log/syslog

@birbird 可能是 ssh 进程关闭的时候把子进程关闭了 1.用 nohup 运行,nohup bundle exec rails s 2.用 tmux 运行(推荐) 安装 tmux

tmux
bundle exec rails s

#8 楼 @birbird 剩余内存不是看 119 的是那个 345

查看 /var/log/kern.log 日志,看有没有 "Out of memory"关键字

http://v2ex.com/t/78160

要求不高的话,直接加 swapfile

@birbird 你 ssh 进去的,我应不应该怀疑你 ssh 断掉的同时,你的 rails server 就 down 了呢。

先加个参数试下:rails server -d

让 rails server 在后台跑

我猜想楼主是用 rails s 这样的方式跑 Webrick 的。 然后登出后,当前用户会话内的进程都被杀掉了……

screen 或者 tmux

你用啥域名,免费的?会不会是域名问题

得到了这么多素不相识的朋友的热情帮助,十分感激!

测试了一天,我来总结一下:

#13 楼 @hsiss #16 楼 @zfjoy520 #17 楼 @kgen #18 楼 @kikyous #19 楼 @cassiuschen 你们是对的,我不知道有「ssh 断掉以后,用户进程就没有了」这件事情,改成后台运行问题就没有了。感谢你们推荐 tmux,这正是我需要的。

#10 楼 @qhwa #11 楼 @zj0713001 #12 楼 @chaixl #15 楼 @cxh116 感谢你们的分析指导,我检查过你们说的 log,没有有价值的发现。我现在的看法是 512M 内存跑我这个简单的 rails 应用没有问题,可以参考 @lang1pal 对剩余内存的解释。

@mouse_lin,我的情况和域名没关系,还没绑域名呢

再次感谢楼上各位!

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