为什么我的WEBrick服务器被杀?

时间:2014-01-05 09:22:52

标签: ruby-on-rails ruby-on-rails-3 ubuntu webrick digital-ocean

我在Ubuntu 12.04上有一个在DigitalOcean上运行的rails开发环境,但是我的WEBrick进程在几个小时后就会被“杀死”。我无法找到任何可能导致此问题的设置或配置。

示例控制台输出:

user@machinename:~/git/app$ rails s
=> Booting WEBrick
=> Rails 3.2.13 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2014-01-05 09:14:29] INFO  WEBrick 1.3.1
[2014-01-05 09:14:29] INFO  ruby 2.0.0 (2013-11-22) [x86_64-linux]
[2014-01-05 09:14:29] INFO  WEBrick::HTTPServer#start: pid=23452 port=3000


Started GET "/" for x.x.x.x at 2014-01-05 09:14:37 +0000
Processing by FunController#welcome as HTML
...

当我使用它时,服务器和应用程序运行正常。但是,在某些时候,我的服务器将退出工作。而且,我将看一下控制台,看看WEBrick的输出结果:

Killed

然后把我踢回贝壳。是什么原因引起了这个?

1 个答案:

答案 0 :(得分:15)

内存不足。 Linux内核将其杀死。默认情况下,Droplet没有任何'swap',因此当内存变满时,它会终止进程或者不会让你开始新的进程。有点疯狂。

这是一篇文章,引导您完成添加交换文件:

https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04

注意:当'swappiness'设置为0时,即使在添加交换文件后,编译器进程仍被“杀死”仍然存在一些问题。将其添加到20可以解决问题。

注2:你真的不应该像其他人在评论中提到的那样在生产中使用webrick。不过,问题还是一个问题:)