2

一段时间以来,我的应用程序中一直存在内存泄漏。当前设置使用 Ruby 2.3.0、Rails 4.2 和 Puma Webserver puma 2.15.3 运行 Heroku 建议使用 Puma,但是大量调试让我相信它是真正的 Puma Webserver,这是所有麻烦的原因. 在调试期间,我删除了大部分 gem、代码等,但问题不断出现,RAM 内存增加,直到出现内存不足。这就是为什么我 99,999% 确定泄漏不是来自我的应用程序的原因。接下来我在我的开发系统上安装了“瘦”网络服务器,这也不是一个解决方案。然后我还将我的 ruby​​ 版本升级到 2.3.0,泄漏立即得到解决,RAM 使用保持正常。

由于这种演变,我将我的生产系统升级到 Ruby 2.3.0(认为这只是一个 ruby​​ 版本问题)但我仍然有内存泄漏。我现在看来它似乎是我的 Puma Webserver 和 Ruby 2.3.0 的组合......

你们中是否有人对 Puma 使用 Ruby 2.3.0 造成内存泄漏有任何经验。

在此先感谢,

更新: 我的 puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end
4

0 回答 0