python项目运行导致内存越来越大的原因详析

 更新时间:2022年11月25日 10:37:08   作者:成都—大数据开发工程师—杨洋  
最近在跑python程序时,出现占用的内存不断增加的情况,下面这篇文章主要给大家介绍了关于python项目运行导致内存越来越大的原因详析,本文通过图文介绍的非常详细,需要的朋友可以参考下

问题描述:

目前遇到的问题是这样的,爬虫程序部署到K8S服务器上运行,但是会过几个小时之后,程序就会被主动杀掉重启,原因是因为内存过载,超过K8S设置的4G。

程序运行现象分析:

在线下进行程序测试时,未让程序长时间运行(及4-5个小时),程序无异常则直接上测试环境测试,然后部署上线了运行了。

通过线下观察,确实程序使用内存会因为时间而不断增加

增长的速度虽然不是很快,但却是在稳定增加,说明程序中存在内存使用未被释放。

尝试解决:

根据上网提供的方案,

import gc
gc.collect()

无效,该增加还是在增加,说明不是全局的内存使用未被释放,内存回收正常。

通过断点调试,发现,程序在使用代理的时候,内存才会增加

程序每次运行时会去获取一个代理赋值到session的proxies中,程序使用的是多线程,则单位时间内会有大量的代理信息会赋值到session中。

通过注释掉获取代理的这一步,发现确实内存不在继续增加。

原因分析:

Session对象存储特定用户会话所需的属性及配置信息,,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。所以随着时间的推移,session中记录的proxies信息就会越来越多,最终导致内存使用过大,程序被杀。

解决方法:

不使用session进行请求,使用原生requests.get即可。

总结

到此这篇关于python项目运行导致内存越来越大的原因详析的文章就介绍到这了,更多相关python项目运行内存越来越大内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Tesserocr库的正确安装方式

    Tesserocr库的正确安装方式

    今天小编就为大家分享一篇关于Tesserocr库的正确安装方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Python 切分数组实例解析

    Python 切分数组实例解析

    这篇文章主要介绍了Python 切分数组实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • anaconda虚拟环境默认路径的更改图文教程

    anaconda虚拟环境默认路径的更改图文教程

    在Anaconda中如果没有指定路径,虚拟环境会默认安装在anaconda所安装的目录下,这篇文章主要给大家介绍了关于anaconda虚拟环境默认路径更改的相关资料,需要的朋友可以参考下
    2023-10-10
  • Pytorch生成随机数Tensor的方法汇总

    Pytorch生成随机数Tensor的方法汇总

    这篇文章主要介绍了Pytorch生成随机数Tensor的方法汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python是先运行metaclass还是先有类属性解析

    python是先运行metaclass还是先有类属性解析

    这篇文章主要为大家介绍了python是先运行metaclass还是先有类属性的问题原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • python爬虫之异常捕获及标签过滤详解

    python爬虫之异常捕获及标签过滤详解

    今天带大家了解python异常捕获及标签过滤,文中有非常详细的代码示例,对正在学习python爬虫的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Python读写文件模式和文件对象方法实例详解

    Python读写文件模式和文件对象方法实例详解

    这篇文章主要介绍了Python读写文件模式和文件对象方法,结合实例形式详细分析了Python文件操作常用技巧与相关注意事项,需要的朋友可以参考下
    2019-09-09
  • Python isinstance函数介绍

    Python isinstance函数介绍

    这篇文章主要介绍了Python isinstance函数介绍,本文用实例讲解了判断变量是否是某个指定类型,需要的朋友可以参考下
    2015-04-04
  • python DataFrame 取差集实例

    python DataFrame 取差集实例

    今天小编就为大家分享一篇python DataFrame 取差集实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python能否java成为主流语言吗

    python能否java成为主流语言吗

    在本篇文章里小编给大家分享的是一篇关于python能否java成为主流语言的相关知识点,有兴趣的朋友们参考下。
    2020-06-06

最新评论