9

我有一个在 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

把我踢回壳里。任何想法是什么原因造成的?

4

1 回答 1

15

它内存不足。linux内核杀死了它。默认情况下,Droplet 不附带任何“交换”,因此当内存已满时,它会杀死一个进程或不允许您启动一个新进程。有点疯狂。

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

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

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

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

于 2014-01-09T05:09:52.837 回答