Я hava highchart graphic в одном из моих представлений и возможность выбрать диапазон дат для запроса и показать на графике. Думаю, когда я выполняю запрос с большим диапазоном дат (например, диапазон года), память поднимается и никогда не возвращается в нормальное состояние, и, наконец, мне нужно перезагрузить сервер ... Вид вызывает класс метод, который выполняет запрос и возвращает массив данных для создания графика. Метод изначально был такой:Rails Утечка памяти с использованием highChart с большим количеством данных
data = []
messages.each do |message|
record = []
record << message.occurance_time.to_s(:highcharts_format)
record << weight_according_to_metric(message.weight, us_metric_enabled)
record << temperature_according_to_metric(message.temperature, us_metric_enabled)
record << (message.humidity.nil? ? nil : message.humidity.to_f)
data << record
end
но после некоторых тестов я поставил find_each вместо .each и я завернул петлю внутри ActiveRecord :: Base.uncached даного:
data = []
ActiveRecord::Base.uncached do
messages.find_each do |message|
record = []
record << message.occurance_time.to_s(:highcharts_format)
record << weight_according_to_metric(message.weight, us_metric_enabled)
record << temperature_according_to_metric(message.temperature, us_metric_enabled)
record << (message.humidity.nil? ? nil : message.humidity.to_f)
data << record
end
end
Но у меня все еще проблемы с памятью. Очевидно, что во время выполнения запросов память растет, но почему память не падает после создания запроса и графики?
Он работает с puma на Heroku!
Любые мысли?
Я не верю, что проблема связана с кешированием ActiveRecord, я считаю, что это может быть связано с драгоценными камнями, которые вы используете. В неактивном блоке в вашем заявлении выше вы ничего не купите. IMHO –
Во всяком случае, с незакрытым блоком или без него моя память всегда сохраняется высокой после создания графики ... – matiasdim
В какой среде вы работаете? – slocumro