https://devcenter.heroku.com/articles/ruby-memory-use#too-many-workers-over-time
首先降低 puma 的 worker = 1 ,结果基本没用
查看是不是 gem 的问题,用到了 derailed 这个 gem, to see how much memory each gem uses at boot time
分析发现 countries 用了 5MB 多的内存,去掉之后确实不报 R14 错误了,说明确实是存在 gem 使用问题导致内存泄漏的问题
最后通过 update 了 carrierwave 和 fog gem 到 latest versioin,减小了内存占用,问题解决
啊。发现问题还是没有解决,并发高的时候内存又溢出了。。
判断可能是属于 Too much memory used at runtime
装了个 scout_apm(heroku 的 add-on)分析了一下
再一查发现还是一个查询语句的问题,出现了慢查询,有一个查询花了接近10秒。最后把查询语句简化,问题解决。
内存超出(Memory Quota Exceeded),排查两个问题:
服务器的问题。worker 是否过多?Puma 切换到 unicorn?
gem的使用问题。使用 derailed gem 可以分析 gem 的内存使用情况;
参考 https://devcenter.heroku.com/articles/ruby-memory-use#too-many-workers-over-time 排查问题
Scan the QR Code to add me on WeChat