Prawn PDF 导致 heroku rails 应用程序中的内存膨胀

Vox*_*off 1 memory pdf email ruby-on-rails heroku

每当我生成 PrawnPDF 时,我的 Heroku Rails 应用程序都会出现内存膨胀。我对每一代都使用以下代码。使用:Ruby 2.5.3 Prawn 2.2.2 Prawn-table 0.2.2

pdf = InvoicePdf.new(hash)
send_data pdf.render, filename: "receipt_#{order_id}.pdf"
Run Code Online (Sandbox Code Playgroud)

在我的邮件中,作为附件:

pdf = InvoicePdf.new(hash)
t = Tempfile.create do |f|
  pdf.render_file f
  f.flush
  File.read(f)
end
attachments["receipt.pdf"] = t if t
Run Code Online (Sandbox Code Playgroud)

上面的代码来源于这里:Attach Prawn pdf to email

这两种方法都会导致内存膨胀。我见过的唯一解决方案是使用 AWS/cloudinary 来存储 pdf。我只会使用 pdf 两次(而且都没有时间压力)所以这似乎是一种浪费。有任何想法吗?

我在启动时没有内存问题。

哥们,谢啦

Vox*_*off 5

以防将来有人看到这个 - Ruby GC 看起来很糟糕。简单地取消引用 pdf ( pdf = nil) 确保它被垃圾收集。