与我的团队讨论后,我找到了原因。
图像尺寸为1920 * 1080,似乎无法使用heroku上的Prawn :: Document.image解决此类图像。 400 * 400的作品。
但是不知道为什么27k png图像会吞噬400M heroku内存。
我仅在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应用程序[web.1]:在2013-08-15 08:29:01 +0000开始为111.174.65.157获取GET“ / issues / 98 / preview” >
2013-08-15T08:29:01.486530 + 00:00应用程序[web.1]:在2013-08-15 08:29:01 +0000开始为111.174.65.157获取GET“ / issues / 98 / preview” >
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实例来处理请求,然后过一会儿,重新创建一个新的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
有什么建议吗?
我仅在Rails应用程序中的一个请求上出现Heroku R14错误。我在本地复制生产环境并查看同一页面,没有错误。针对heroku日志进行调试之后。我找到了内存...
与我的团队讨论后,我找到了原因。
图像尺寸为1920 * 1080,似乎无法使用heroku上的Prawn :: Document.image解决此类图像。 400 * 400的作品。
但是不知道为什么27k png图像会吞噬400M heroku内存。
与我的团队讨论后,我找到了原因。
图像尺寸为1920 * 1080,似乎无法使用heroku上的Prawn :: Document.image解决此类图像。 400 * 400的作品。
但是不知道为什么27k png图像会吞噬400M heroku内存。
旧案例,但是今天我仍然遇到这个问题。
根据他们在Github页面上的票证,透明图像存在问题。就我而言,可以将徽标图像更改为另一种具有白色背景的图像,因此我将其更改并解决了内存问题。
他们在2013年关闭了票务,所以我想我也许是今天唯一遇到这个问题的人。还有其他解决方案吗?