由于自动刷新日志而导致内存利用率过高

时间:2014-02-14 20:12:05

标签: ruby-on-rails logging unicorn production autoflush

如果autoflush_log设置为true,是否可以获得高内存利用率?

我有像这样的自定义生产环境(登台)设置

require Rails.root.join("config/environments/production")

Calamus::Application.configure do
  config.action_mailer.default_url_options = {:protocol => 'https', :host => xx.xx.xx.xx }
end

这是记录sql语句。所以我将日志级别设置为info

config.log_level = :info

但添加上述行会导致独角兽进程占用太多内存并且机器内存运行非常高

当我添加此行

config.autoflush_log = false

内存利用率正常。 任何人都可以看到连接?为什么autoflushing会导致高内存利用率?

1 个答案:

答案 0 :(得分:1)

一般来说,写入文件与任何IO操作一样昂贵。这导致了其他问题,例如,我记录了多少会导致系统速度下降?我记录的文件系统是什么,它是共享的吗?

你看过日志了吗?是否有异常被提出?你的日志有多大?以什么速度?

首先,我会看一下记录的内容以及发生这种情况的速度。 其次,如果记录正常但内存利用率很高,我会将记录下来进一步调查。

拳。只记录高于或等于警告的任何内容

config.log_level = :warn

没有设置autoflush_log。

当系统很高时,我会看看“top”告诉我什么以及/ var / log / syslog

“top”的替代实用程序是“htop”。它为您提供了更多信息(眼睛更容易)以及高度可配置性。 http://hisham.hm/htop/