相关疑难解决方法(0)

Heroku Rails无法为连接分叉新进程:无法分配内存

我有3个Rails应用程序都使用相同的代码库.2/3的应用程序运行正常,但其中一个给了我这个错误:

无法为连接分叉新进程:无法分配内存

在尝试查看Postgres日志时,它更加具体:

psql:bin // psql-9.2.1-64bit pv:bin // pv-1.1.4-64bit psql-9.2.1-64bit:
无法分叉新进程进行连接:无法分配内存
无法分叉新进程进行连接:无法分配内存
无法分叉新进程进行连接:无法分配内存
bin/brie:第146行:[::整数表达式预期pg_dump:
bin // pg_dump-9.2.1-64bit psql-9.2.1-64bit:
无法fork新进程连接:无法分配内存
无法分叉新进程进行连接:无法分配内存
无法分叉新进程进行连接:无法分配内存

这是一个相对较小的应用程序,尤其是数据方面.我试过重新推动一切,我尝试了heroku-restart,而Heroku的状态页面说它们很好.任何帮助,将不胜感激.

ruby-on-rails heroku rails-postgresql

15
推荐指数
1
解决办法
3891
查看次数

服务器在一段时间后挂起所有请求

我们的Rails 4.0应用程序(Ruby 2.1.2)使用Puma 2.9.0在Nginx上运行.

我最近注意到,对我们的应用程序的所有请求都会在一段时间后停止(通常为1或2天).

检查设置为debugmode的日志时,我注意到以下日志堆栈:

[2014-10-11T00:02:31.727382 #23458]  INFO -- : Started GET "/" for ...
Run Code Online (Sandbox Code Playgroud)

它确实意味着请求实际上访问了Rails应用程序,但不知何故它没有继续,而通常它会是:

I, [2014-10-11T00:02:31.727382 #23458]  INFO -- : Started GET "/" for ....
I, [2014-10-11T00:02:31.729393 #23458]  INFO -- : Processing by HomeController#index as HTML
Run Code Online (Sandbox Code Playgroud)

我的puma配置如下:

threads 16,32
workers 4
Run Code Online (Sandbox Code Playgroud)

我们的应用程序仅用于现在的内部使用,因此RPM非常低,并且所有请求都不会超过2秒.

可能导致此问题的原因是什么?(puma配置,数据库连接等)

先感谢您.

更新:在安装gem rack_timer以记录在每个中间件上花费的时间之后,我意识到我们的请求在发生挂起时一直停留在ActiveRecord :: QueryCache上,并且有大量时间:

Rack Timer (incoming) -- ActiveRecord::QueryCache: 925626.7731189728 ms
Run Code Online (Sandbox Code Playgroud)

我暂时删除了这个中间件,它似乎恢复正常.但是,我理解这个中间件的目的是提高性能,因此删除它只是一个临时解决方案.请帮我找出这个问题的可能原因.

仅供参考,我们使用mysql(5.1.67)和适配器mysql2(0.3.13)

mysql ruby-on-rails nginx puma

9
推荐指数
1
解决办法
810
查看次数

标签 统计

ruby-on-rails ×2

heroku ×1

mysql ×1

nginx ×1

puma ×1

rails-postgresql ×1