Высокая загрузка памяти благодаря журналу автозаполнения

Возможно ли иметь высокое использование памяти, если 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 вызвать высокое использование памяти?

1 ответ

Вообще говоря, запись в файлы является дорогой операцией, как любая операция ввода-вывода. Это приводит к другим вопросам, таким как, сколько я регистрирую, чтобы вызвать замедление системы? В какую файловую систему я вхожу, общедоступна и т. Д.?

Вы смотрели на журналы? Возникают ли исключения? Насколько большой ваш журнал растет? И по какому тарифу?

Сначала я бы посмотрел, что регистрируется, и скорость, с которой это происходит. Во-вторых, если ведение журнала нормальное, но использование mem высокое, я бы остановил ведение журнала для дальнейшего изучения.

Кулак. Регистрировать только что-либо выше или равное предупреждению

config.log_level = :warn

без настройки autoflush_log.

Когда система высокая, я бы посмотрел на то, что говорит мне top, а также /var/log/syslog

Альтернативой утилите top является htop. Это дает вам больше информации, которую я нахожу (проще на глаз), а также является легко настраиваемым. http://hisham.hm/htop/

Другие вопросы по тегам