早在一年以前,自己写的一个程序部署在公司的服务器上长期运行,后来发现这台机器内存经常被这个进程占光,于是怀疑是python内存回收的问题。
最近两天,这个问题又冒了出来,因为业务的发展,项目中需要的脚本程序越来越多,所以这个问题必须解决,于是花了两周的时间一直在排查,而网上也有很多文章描述python占用内存不回收的问题。
终于在今天网上搜到一篇文章介绍django引起内存泄漏的问题 http://www.igigo.net/archives/tag/python
一开始我并没有仔细看,以为和我的场景并不一样,但当我黔驴技穷而最终这篇文章再次出现在我面前时,我简单地看了个开头,忽然发现和我的场景竟然是一样的,只不过我的场景更加复杂给了我很多假象而已...
中心思想就是,如果程序中导入了某个django站点模块,而这个django站点的DEBUG设置为True的话,就会导致所有的SQL查询都会被保存在内存中.
于是果断地把DEBUG设置为False,再次启动,内存不再涨了