自动刷新日志导致内存利用率高

ush*_*sha 5 logging production ruby-on-rails unicorn 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
Run Code Online (Sandbox Code Playgroud)

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

config.log_level = :info
Run Code Online (Sandbox Code Playgroud)

但是添加上面的行导致独角兽进程占用太多内存并且机器在内存上运行得非常高

当我添加这一行时

config.autoflush_log = false
Run Code Online (Sandbox Code Playgroud)

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

lsa*_*fie 2

一般来说,写入文件与任何 IO 操作一样都是昂贵的操作。这会导致其他问题,例如,我记录了多少日志会导致系统速度变慢?我正在登录哪个文件系统,是否共享等?

你看过日志吗?是否存在例外情况?你的日志会长到多大?以什么速度?

首先,我会查看正在记录的内容以及记录的速度。其次,如果日志记录正常但内存利用率很高,我会降低日志记录以进一步调查。

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

config.log_level = :warn
Run Code Online (Sandbox Code Playgroud)

不设置autoflush_log。

当系统处于高位时,我会查看“top”告诉我的内容以及/var/log/syslog

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