我的rails应用程序中只有一个请求出现了Heroku R14错误。
我在本地重现生产环境并查看同一页面,没有错误。
针对heroku日志进行调试后。我发现此请求后内存增加得更快。这是内存日志。
2013-08-15T08:28:45.104572 + 00:00 heroku [web.1]:source = heroku.16694287.web.1.95c77962-7288-4bf5-a912-d2db99eab511 measure = memory_total val = 113.04 units = MB
2013-08-15T08:29:01.486530 + 00:00 app [web.1]:开始GET" / issues / 98 / preview"对于111.174.65.157 at 2013-08-15 08:29:01 +0000
2013-08-15T08:29:01.486530 + 00:00 app [web.1]:开始GET" / issues / 98 / preview"对于111.174.65.157 at 2013-08-15 08:29:01 +0000
2013-08-15T08:29:07.330011 + 00:00 heroku [web.1]:source = heroku.16694287.web.1.95c77962-7288-4bf5-a912-d2db99eab511 measure = memory_total val = 220.39 units = MB
2013-08-15T08:29:29.712928 + 00:00 heroku [web.1]:source = heroku.16694287.web.1.95c77962-7288-4bf5-a912-d2db99eab511 measure = memory_total val = 511.97 units = MB
我多次检查日志,似乎heroku创建了一个新的rails实例来处理reqesut,过了一会儿,重新创建一个新的rails实例,直到它超出内存限制。
我认识到有两个请求日志。在我的本地生产环境中,每个请求也有两个日志。我还调试预览动作,它只调用一次。在开发过程中,没有这样的日志问题。所以我认为在生产环境中应该有一些日志配置错误。但它不应该与heroku内存问题有关。
预览请求在Prawn :: Document对象上调用图像渲染方法
require 'open-uri'
...
# the context is an instance of Prawn:Document
unless image_path.nil?
f = open(image_path)
image f, fit: [400, 400]
end
我很确定这个错误发生在图像行上。如果我删除图像行,预览请求将起作用。该页面将显示没有图像的pdf。如果我离开它,那么页面将被阻止,最后内存超过。
我调试了一天,没有更多的想法。
对虾版本是0.12.0
我的rails版本是4.0
有什么建议吗?
答案 0 :(得分:2)
在与我的团队讨论后,我明白了。
图像尺寸为1920 * 1080,似乎无法在heroku上使用Prawn :: Document.image解决此类图像。一个400 * 400的作品。
但不知道为什么一个27k的png图像会占用400M的Heroku内存。