内存泄漏- gunicorn + django + mysqldb

9wbgstp7  于 2022-12-05  发布在  Go
关注(0)|答案(1)|浏览(202)

我的gunicorn + django1.5.1 + mysqldb中有内存泄漏。我开始用gc和objgraph探索我的代码
当gunicorn工人成为超过300 mb我收集了一些统计:

data['sum_leak'] = sum((getsizeof(o) for o in objgraph.get_leaking_objects()))  #2 mb
data['total_objects_length'] = sum((getsizeof(o) for o in gc.get_objects()))    #6 mb

因此只有2+6=8 MB,而枪角工蜂超过300 MB。
所以我认为问题不在python代码中,而是更深层次的问题。
我有:枪角==0.17.2 mysqldb==1.2.4
我通过pip安装将whem更新到19.0.0和1.2.5,但是pip frreze显示旧版本,而gunicorn -v和mysqldb.version_info显示上次更新。
所以我想如何完全重新安装gunicorn和mysqldb是shure其完全删除旧的(可能是一些旧的雏形使问题)?
此外,我得到与pmap一些信息:

pmap -x 805
805:   /usr/bin/python /usr/local/bin/gunicorn engine.wsgi:application -b 127.0.0.1:9005 --workers=2
Address   Kbytes     RSS   Dirty Mode   Mapping
08048000       0    1444       0 r-x--  python2.7
0829e000       0       4       4 r----  python2.7
0829f000       0     204     120 rw---  python2.7
082f4000       0      44      44 rw---    [ anon ]
09947000       0    3360    3360 rw---    [ anon ]
09c91000       0  253204  253204 rw---    [ anon ]
b5500000       0       4       4 rw---    [ anon ]
b5521000       0       0       0 -----    [ anon ]
b56d5000       0       0       0 -----    [ anon ]
b56d6000       0    1552    1552 rw---    [ anon ]
b6257000       0      12       0 r-x--  libpcre.so.3.12.1

这里似乎有漏洞-09 c91000 0 253204 253204 rw--- [匿名]
但我不知道该怎么办
需要帮助的一些方法如何修复此泄漏?

ffdz8vbo

ffdz8vbo1#

如果你认为这个问题如果是由枪角工人引起的,有一个简单的方法可以检验这个假设:
使用参数--max-requests *some positive number*启动工作线程
这将使gunicorn在为指定数量的请求提供服务后重新启动每个工作进程。
在文件中他们说:This is a simple method to help limit the damage of memory leaks.

相关问题