当我在独立的一次性dyno中运行管理命令时,它几乎立即超过了内存配额。当我以非分离方式运行时,它可以完美运行。我希望对此有所了解。任何指向该现象的文档的答案都将是惊人的。
这是针对Python管理命令(addfeederpolygons
)的,我估计它要使用几百兆的内存,因为它与geodjango进行了一些密集的空间连接。
有没有一种方法可以使基础代码在独立的一次性dyno和非独立的一次性dyno中有不同的表现?
我希望结果是相同的,而不管测功机是否处于分离状态。但这是实际输出:
在独立运行时
$ heroku run -a kevala-api-stage python manage.py addfeederpolygons --geography 25 --overwrite
› Warning: heroku update available from 7.0.33 to 7.19.3
Running python manage.py addfeederpolygons --geography 25 --overwrite on ⬢ kevala-api-stage... up, run.8817 (Standard-1X)
initialized redis cache
Imported all multipolygon data for 328922
Imported all multipolygon data for 329602
...etc...
这不会崩溃,并且比其他情况下运行快得多 ...
分离运行时
$ heroku run:detached -a kevala-api-stage python manage.py addfeederpolygons --geography 25 --overwrite
$ heroku logs --app kevala-api-stage --dyno run.5051 -n 1500
› Warning: heroku update available from 7.0.33 to 7.19.3
2019-01-30T19:23:10.894495+00:00 heroku[run.5051]: State changed from starting to up
2019-01-30T19:23:19.578170+00:00 app[run.5051]: initialized redis cache
2019-01-30T19:23:56.311511+00:00 heroku[run.5051]: Process running mem=553M(108.1%)
2019-01-30T19:23:56.311732+00:00 heroku[run.5051]: Error R14 (Memory quota exceeded)
2019-01-30T19:24:00.700959+00:00 app[run.5051]: Imported all multipolygon data for 328922
2019-01-30T19:24:03.325782+00:00 app[run.5051]: Imported all multipolygon data for 329602
...etc...
eventually fails with R15
答案 0 :(得分:2)
因此,我暂时失去了评论的能力,因此我不得不写出答案。好消息是,我认为您想做的是设置一个Log Drain来补偿您遇到的内存泄漏和/或瓶颈。
如果您不介意的话,我还可以看到有问题的日志之一(Pastebin吗?)。我想确切地了解发生了什么,这可能会有所帮助。