5

如果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 语句。所以我将日志级别设置为信息

config.log_level = :info

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

当我添加这一行

config.autoflush_log = false

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

4

1 回答 1

2

一般来说,写入文件和任何 IO 操作一样都是一项昂贵的操作。这会导致其他问题,例如,我记录了多少会导致系统减速?我登录到什么文件系统,它是共享的,等等?

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

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

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

config.log_level = :warn

不设置 autoflush_log。

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

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

于 2014-02-22T17:37:48.347 回答