我想在生产系统中登录Python脚本的当前内存使用情况。 AWS具有Container Insights,但它们非常隐蔽,我不确定如何在其他仪表板/日志记录和更改系统中正确使用它们。另外,我不确定日志的峰值内存是否全部。
Python脚本是生产系统。它在Docker容器内的AWS上运行,我遇到了以前方法(link)的问题。
tracemalloc似乎可以给我我想要的信息:
# At the start of the script
import tracemalloc
tracemalloc.start()
# script running...
# At the end
current, peak = tracemalloc.get_traced_memory()
logger.info(f"Current memory usage is {current / 10**6} MB")
logger.info(f"Peak memory usage was {peak / 10**6} MB")
tracemalloc.stop()
但是,文档状态:
tracemalloc模块是调试工具
因此将其包装在生产代码周围会不是一个好主意?多少开销?还有其他原因不在生产中使用吗?
((我对代码的哪些部分需要最多的内存以及达到峰值内存的位置有了很好的了解。我想监视该部分(或者更确切地说,是那几个对象的大小/几行代码)。替代tracemalloc似乎是使用一些like this)
我一直在尝试回答相同的问题。我找到的最佳答案来自
https://www.mail-archive.com/[email protected]/msg443129.html
根据简单的实验,使用tracemalloc引用的内存使用量增加了3-4倍。