有一段时间我的应用程序中一直存在内存泄漏。当前的设置运行Ruby 2.3.0,Rails 4.2和Puma Webserver puma 2.15.3 Heroku建议使用Puma,但是很多调试让我相信它是真正的Puma Webserver,这是导致所有麻烦的原因。在调试过程中,我删除了大部分宝石,代码等,但问题仍然存在,RAM内存不断增加,直到出现内存不足。这就是为什么我99,999%肯定泄漏不是来自我的应用程序。接下来,我在我的开发系统上安装了“Thin”Webserver,这也不是解决方案。然后我还将我的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