小编Ant*_*lie的帖子

升级到Rails 4后,postgresql服务器上的内存泄漏

我们在Heroku上的Rails应用程序上遇到了一个奇怪的问题.从Rails 3.2.17迁移到Rails 4.0.3之后的Juste我们的postgresql服务器显示内存使用量的无限增加,然后它在每个请求上返回以下错误:

ERROR: out of memory
DETAIL: Failed on request of size xxx
Run Code Online (Sandbox Code Playgroud)

Juste用rails 4释放应用程序后,postgresql内存开始增加.

正如您在下面的屏幕截图中看到的,它在3小时内从500 MO增加到3,5 Go以上

在此输入图像描述

同时,每秒提交加倍.它从每秒120次提交传递:

在此输入图像描述

每秒280次提交:

在此输入图像描述

值得注意的是,当我们重新启动应用程序时,内存会下降到正常值600 Mo,然后上升到3个以上后几个小时(然后每个sql请求显示"内存不足"错误).这就像杀死ActiveRecord连接在postgresql服务器上释放内存一样.

我们可能在某个地方有内存泄漏.但是:

  • 它与Rails 3.2一起工作得非常好.也许这个问题是我们为了使我们的代码适应Rails 4和Rails 4代码本身所做的更改之间的联系.
  • 在Rails 4升级后,每秒提交的数量增加似乎很奇怪.

我们的堆栈是:

  • Heroku,x2 dynos
  • Postgresql,Ika计划在heroku上
  • 独角兽,每个实例3名工人
  • Rails 4.0.3
  • Redis缓存.
  • 值得注意的宝石:延迟工作(4.0.0),活动管理员(在主分支上),舒适的墨西哥沙发(1.11.2)

在我们的代码中似乎没什么特别的东西.

我们的postgresql配置是:

  • work_mem:100MB
  • shared_buffers:1464MB
  • max_connections:500
  • maintenance_work_mem:64MB

有人在切换到Rails 4时遇到过这样的行为吗?我正在寻找重现的想法.

非常欢迎所有帮助.

提前致谢.

postgresql ruby-on-rails heroku

14
推荐指数
1
解决办法
2031
查看次数

标签 统计

heroku ×1

postgresql ×1

ruby-on-rails ×1