Высокая загрузка памяти благодаря журналу автозаполнения
Возможно ли иметь высокое использование памяти, если 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/