首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Heroku工作线程超时时运行wkhtmltopdf

在Heroku工作线程超时时运行wkhtmltopdf
EN

Stack Overflow用户
提问于 2017-05-05 11:52:28
回答 1查看 103关注 0票数 0

我有PDF,我需要在我的rails应用程序中从html转换,包括页眉和页脚。这给我留下了wkhtmltopdf (如果还有其他选择,请让我知道!)对于较小的PDF,此解决方案运行良好-但较大的PDF成为一个问题。我现在使用一个delayed_job worker在后台对一个业余爱好工作者dyno运行这个转换--这需要一段时间,但可以工作……有时候。对于较大的PDF(或包含大量图像的PDF),我永远得不到结果。深入研究工作人员的日志,我看到了以下内容:

代码语言:javascript
复制
2017-05-05T03:36:18.164514+00:00 heroku[worker.1]: Process running mem=666M(130.1%)
2017-05-05T03:36:18.164514+00:00 heroku[worker.1]: Error R14 (Memory quota exceeded)
2017-05-05T03:36:37.951774+00:00 heroku[worker.1]: Process running mem=804M(157.0%)
2017-05-05T03:36:37.951813+00:00 heroku[worker.1]: Error R14 (Memory quota exceeded)
2017-05-05T03:36:57.964496+00:00 heroku[worker.1]: Process running mem=944M(184.6%)
2017-05-05T03:36:57.964542+00:00 heroku[worker.1]: Error R14 (Memory quota exceeded)
2017-05-05T03:37:37.826785+00:00 heroku[worker.1]: Process running mem=1040M(203.2%)
2017-05-05T03:37:37.826861+00:00 heroku[worker.1]: Error R15 (Memory quota vastly exceeded)
2017-05-05T03:37:37.826932+00:00 heroku[worker.1]: Stopping process with SIGKILL
2017-05-05T03:37:37.985631+00:00 heroku[worker.1]: Process exited with status 137
2017-05-05T03:37:37.998614+00:00 heroku[worker.1]: State changed from up to crashed
2017-05-05T03:37:38.000020+00:00 heroku[worker.1]: State changed from crashed to starting
2017-05-05T03:37:45.825684+00:00 heroku[worker.1]: Starting process with command `rake jobs:work`
2017-05-05T03:37:46.532529+00:00 heroku[worker.1]: State changed from starting to up
2017-05-05T03:37:50.758067+00:00 app[worker.1]: [Worker(host:a5db76f8-58b3-4585-b664-eee04efb8a96 pid:4)] Starting job worker
2017-05-05T03:37:50.758157+00:00 app[worker.1]: I, [2017-05-05T03:37:50.758063 #4]  INFO -- : 2017-05-05T03:37:50+0000: [Worker(host:a5db76f8-58b3-4585-b664-eee04efb8a96 pid:4)] Starting job worker

我显然遇到了一个记忆墙(不确定如何在不购买更昂贵的dyno的情况下修复这个问题),但我认为这没问题……它应该只是换出到磁盘,并且需要更长的时间,对吗?我在cloud9上使用相同的配置设置了一个私有实例,这就是它在那里做的事情。有没有办法设置分页选项?

那么我能做什么呢?我不在乎PDF是否需要2-3分钟才能生成,我只是不想被终止!

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-05-05 22:50:45

您使用的是哪个Ruby版本?如果你运行的是2.1以下的版本,你肯定应该升级到更高的版本。

Heroku的官方指南解释了内存问题,与你在详细信息中得到的错误相同,并解释了可能的修复。我认为这是你能得到的最好的资源!

https://devcenter.heroku.com/articles/ruby-memory-use

您还可以使用heroku将SideKiq生成转移到后台作业,这样就不会抛出heroku的超时错误。但是,您必须将pdf文件上传到云服务器,如亚马逊S3。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43796203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档