Утечка памяти при массовой рассылке - PullRequest
0 голосов
/ 15 мая 2018

Я делаю доставку электронной почты в фоновом режиме (более 1k писем).Сервер находится на Heroku.Для фоновых задач я использую sucker_punch.Rails - 4.1.6, веб-сервер - passenger.Это мой код:

def email_blast message, child_message_id, resend
    @download_url = message.doc_file_size ? message.doc.url : ''
    @subscriber = message.subscriber
    @message = message
    send_message child_message_id, resend
end

def send_message child_message_id, resend
    messages = child_message_id ? Message.where(id: child_message_id) : Message.where(parent_message_id: @message.id)
    messages = messages.joins(:pending_messages).uniq if resend && child_message_id.nil?
    subject = 'New Message'
    type = @message.type.split('::').second || @message.type.split('::').first
    messages.each do |message|
      send_mail message.all_email_addresses, action_name, subject, message, type
    end
end


def send_mail emails, template, subject, model, type
    response = mail(to: emails, subject: subject,
                    template_name: template).deliver!
    create_track_emails response.string.split(' ').third.strip, get_status(response), 'delivered', emails, model, type
  rescue => e
    create_track_emails '00000', 'failed', e.message, emails, model, type
end

def get_status response
    response.status == '250' ? 'success' : 'failed'
end

def create_track_emails smtp_message_id, status, description, emails, model, type
    id = type == 'Logon' ? model.id : model.to_id
    emails.each do |email|
      model.track_emails.create(email_address: email,
                                status: status,
                                status_description: description,
                                smtp_message_id: smtp_message_id,
                                subscriber_id: model.subscriber_id,
                                user_id: id,
                                message_type: type)
    end
end

Я наблюдаю утечку памяти.Я также вижу, что частичное время рендеринга увеличивается с каждой буквой:

enter image description here

Скажите, пожалуйста, в чем может быть проблема и куда копать.

...