即使它没有接近内存限制,Python Heroku应用程序崩溃了

时间:2016-02-15 01:12:37

标签: python memory heroku

我正在Heroku上部署一个Python应用程序,它必须加载一个~40 MB的JSON文件。即使Heroku告诉我它应该有512 MB的RAM,应用程序也会因内存不足而崩溃。为什么会发生这种情况,我能解决吗?错误日志(来自heroku日志)如下:

2016-02-15T01:10:3​​9.367715 + 00:00 heroku [web.1]:进程退出状态为137 2016-02-15T01:10:52.785020 + 00:00 heroku [web.1]:正在运行的进程mem = 731M(142.6%) 2016-02-15T01:10:52.785020 + 00:00 heroku [web.1]:错误R14(超出内存配额)

2 个答案:

答案 0 :(得分:0)

如果它卡在递归循环中,它会给你一个内存不足的错误。

答案 1 :(得分:0)

变量或结构的内存中表示远大于文件表示。例如,

import sys

sys.getsizeof({})       # => 288 bytes
sys.getsizeof([])       # => 64 bytes
sys.getsizeof("abc")    # => 52 bytes
sys.getsizeof(12)       # => 28 bytes

(请注意,这些值是在Windows 10上使用Cython 3.4 64位获得的;您的值可能会因您的操作系统和python版本而异。)

我做了一个快速测试:一个33 KB的.json文件在内存中变成了188 KB。根据您的数据嵌套程度,40 MB文件很可能需要350 MB内存才能解压缩,而且不包括程序/ OS /等使用的其他内存。