描述:
最近遇到使用一个第三方python库,按照第三方库文档的方法释放内存也释放不了,不断消耗内存,最终导致内存溢出,这属于内存无法释放、内存泄露的bug。联系了该库的开发人员说这个问题不好解决,最终只能自己想办法,于是就想到了两种办法:
1.编写python代码获取当前进程的内存,检测超出一定内存后重启服务
2.编写linux脚本定时执行内存检测超出一定内存后系统重启的方法,python项目配置了开机自启
代码如下:
# 获取当前进程对象
current_process = psutil.Process(os.getpid())
# 获取内存使用信息(以字节为单位)
memory_info = current_process.memory_info()
# 内存使用量(GB) memory_info.rss:物理内存 memory_info.vms: 虚拟内存
use_memory = round(memory_info.rss / (1024 * 1024 * 1024), 1)
# 内存使用超过3G就重启服务
if (use_memory > 3):
print("Memory usage exceeds 2.3")
# 执行Linux重启服务的命令
result = subprocess.run(f"systemctl restart my.service", shell=True, capture_output=True,
text=True)
编写linux脚本内存检测超过一定内存后重启: