新手问题 [已解决] passenger 分配内存不足

tsaikoga · May 18, 2014 · Last by tsaikoga replied at May 20, 2014 · 3449 hits

今天我的网站上的回复功能不能用了,出现 500 错误。查看 apache 的 log 文件发现如下问题:

Preloader for /var/www/xxx started on PID 8186, listening on unix:/tmp/passenger.1.0.19601/generation-1/backends/preloader.8186
App 8186 stderr: /usr/local/rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/lib/phusion_passenger/preloader_shared_helpers.rb:66:in `fork'
App 8186 stderr: :
App 8186 stderr: Cannot allocate memory - fork(2)

之后,我在 tmp 目录下创建了一个 restart.txt 就好了, 我想知道这是怎么回事,Passenger 到底会生成什么,restart 又是怎么自动执行的?

Passenger 在启动 Rails 进程的时候,遇到了系统内存不足的情况,通常这个时候,你应该检查并增加服务器的可用内存。

#1 楼 @lgn21st 之前没有出现此情况,网站也没有设置 Rails 缓存,会是什么导致内存不足呢,请问应该怎么查呢?

ruby 是哪个版本的?

#2 楼 @tsaikoga 内存不足跟缓存无关,跟你的系统总内存和已经使用的内存有关。首先你需要知道系统物理内存有多大,已经使用的内存有多少,被谁用了,是否正常,是否需要添加内存或者调整进程的内存用量等。

可以使用 free -mh 简单直观的查看内存用量。

#3 楼 @cgg5207 我的 ruby 是 2.0.0

#4 楼 @lgn21st 那么请问为什么 restart 会有用呢?

#7 楼 @lgn21st 非常有用,受教了。

You need to Sign in before reply, if you don't have an account, please Sign up first.