"Django启动时的内存占用分析"

2024-03-29 11:56:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试优化我的django1.8项目的内存使用情况,并且我注意到,即使从初始化开始,它也使用了80+MB,这似乎太过分了。当我简单地运行./manage shell --plain时,我观察到了这一点。相比之下,一个启动时的空Django项目只使用30MB。我想知道是什么在消耗这么多的内存。在

我试图通过删除它的各种应用程序来减少它的内存消耗。我试着翻了gc.get_objects,但这是不可理解的。我对tracemalloc很感兴趣,所以我构建了一个包含tracemalloc的自定义Python2.7.8,结果发现它不会开始跟踪,直到我从提示符调用start(),此时内存已经被消耗掉了。在

问题:

  1. 是什么原因导致了这种高内存水平?在
  2. 我可以使用什么过程来确定消费者?在

是的,我意识到版本急需升级。谢谢!在

更新1

我确实设法利用了一些tracemalloc。我插入了导入并从manage.py的开头开始。在

/Users/john/.venv/proj-tracemalloc/lib/python2.7/site-packages/zinnia/comparison.py:19: size=25.0 MiB (+25.0 MiB), count=27168 (+27168), average=993 B
/usr/local/tracemalloc-py2.7.8/py27/lib/python2.7/importlib/__init__.py:37: size=3936 KiB (+3936 KiB), count=9581 (+9581), average=420 B
...

它确实揭示了一个有趣的东西-这第一行是一个博客应用程序。这个循环似乎占用了大量内存,虽然我猜是临时的。到3号线,所有数据都是1.5MB或更小。在

^{pr2}$

更新2

我经历了卸载软件包、应用程序和修复损坏代码的繁琐过程。最后,看起来可能10MB是由于我的内部应用程序造成的,25MB是由于Django调试工具栏造成的。这让我降到了45MB。我的核心应用程序占用15MB的内存,并将其降低到30MB的核心,这似乎并不不合情理。我不在生产环境中使用工具栏,但它确实需要额外的内存才能正常工作。在

最后,我并没有学到多少东西,但至少没有什么东西是错误的。我对tracemalloc感到失望,但希望它能更好地集成到Python3中。在


Tags: 项目django内存py应用程序sizemanage过程