我们运行红宝石请求时,有很多免费的堆插槽
- Sidekiq 4.2.9
- 轨4.2.8
- MRI 2.1.9
这是一个服务器更多的内存服务器定期从外部API中产生一定量的导入,对它们执行一些计算并将这些值保存到数据库中。
大约3个星期前,服务器开始挂起,就像我从NewRelic看到的那样(当ssh发现它时) - 它随着时间消耗越来越多的内存,最终占用所有可用内存,然后挂起服务器。为什么在~5:30 AM堆大小从〜2.3M跳到3M时,仍然有1M空闲堆插槽可用(GC设置为默认)
所以,问题是:
- 如何让Ruby填充空闲堆槽而不是从操作系统请求新插槽?
- 如何让它释放免费的堆槽到系统?
值得一读:https://blog.heroku.com/incremental-gc – Anthony
你使用什么服务器?美洲狮?独角兽?瘦?生产中的webrick? –
@JoshBrody,我们的Puma服务器很好,我说的是sidekiq服务器 –