Python进程日益增加内存使用率
场景:
我有一个Python程序,它会一直运行(直到我们手动停止,基本上是无限的),每隔一分钟就会读取某些系统文件来收集数据。刚开始运行时,它大约占用25MB的内存。但随着时间的推移,内存占用量逐渐增加,经过15天后,内存占用超过了500MB。
- 我还是个Python新手,所以无法通过手动查看代码或使用调试工具来找出问题。
- 我不知道有什么工具可以轻松发现这个问题,请推荐一些工具或方法,帮助我找到问题所在。
- 我猜这可能是内存泄漏的问题,或者是某个变量不断地追加数据,但从来没有释放掉... 请给我一些参考资料,帮助我理解Python中这类问题。
希望这些信息足够清楚,如果需要更多细节,请告诉我,我可以进一步解释。
更新
我试着跟进这个讨论 从正在运行的Python应用程序中显示堆栈跟踪,但遇到了以下错误,我无法完全解决。
- 当前上下文中没有符号 "PyEval_EvalFrameEx"。
- 当前上下文中没有符号 "PyStringObject"。
我搜索过想找到一种方法,可以挂钩到已经运行的进程中,获取堆栈/内存信息。但到现在为止还没有找到合适的方法,请帮帮我。
2 个回答
1
这是一个大家都知道的问题,主要出现在长时间运行的Python程序中。虽然已经做了一些改进,但问题并没有完全解决。例如,Python使用了自己的一套内存管理方法,这可能会导致内存的碎片化。最好的办法是同时运行多个进程,并在每个进程的内存使用达到高峰时优雅地重启它们。Apache也是采用这种策略。