【问题标题】:Python Heroku app crashes even though it's not near memory limitPython Heroku 应用程序崩溃,即使它没有接近内存限制
【发布时间】:2016-02-15 01:12:37
【问题描述】:

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

2016-02-15T01:10:39.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(超出内存配额)

【问题讨论】:

    标签: python memory heroku


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      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 64bit 获得的;您的值可能会因您的操作系统和 python 版本而异。)

      我做了一个快速测试:一个 33 KB 的 .json 文件在内存中变成了 188 KB。根据您的数据嵌套的深度,一个 40 MB 的文件很有可能需要 350 MB 的内存来解压,这还不包括您的程序/操作系统等使用的其他内存。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-08
        • 2019-02-06
        • 2011-10-03
        • 2015-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多