大型查询导致Django内存泄漏

时间:2018-08-20 12:53:30

标签: python django

第一件事;

  • 我的设置文件中的Debug = False
  • 我正在使用迭代器遍历查询集中的行
  • Python 2.7,Django 1.11.12,Ubuntu 16.04,数据库Postgresql,Nginx + Gunicorn

我的应用程序中有一个端点,在该端点上对数据库运行大型查询。当请求到达时,我运行一个查询,该查询从一个大表返回大量行,使用迭代器遍历结果,并从行中构造一个列表,然后返回该列表。我跟踪Django进程的内存使用情况,这是发生的情况:

  • 最初,每个进程消耗大约40 MB的内存
  • 当我第一次运行查询时,内存使用量高达700 Mbs
  • 第二次运行查询(假设请求在同一进程中进行),内存使用量增加到大约1400 MB。这样一直进行到服务器内存不足为止。

这里似乎存在内存泄漏,但是我找不到引起它的原因。这是我的观点,很简单:

results = Model.objects.filter(a=1, b=2).values('a', 'b', 'c').order_by('c')
result_list = []
for row in results.iterator():
    result_list.append(row)

return Response({'body': result_list})

有什么想法可能导致泄漏?

0 个答案:

没有答案