问题描述
出了什么问题?
我做了一些测试,意识到在pm2中使用线程时,它会导致内存泄漏,在此情况下,线程会堆积在线程上而不是转储它们。我已经用pm2和普通终端进行了测试。使用线程时,我可以看到使用普通终端大约需要60mb〜的使用量。使用相同的精确代码,使用PM2时的堆栈可能会超过160MB〜。
我要做的是,当线程完成其任务后,应使用return /或sys.exit()将其杀死
我们如何重现此问题?
这是我做过的一个示例,我不确定这是否可以复制它,但是即使相同的代码,相同的代码也应该提供两种不同的RAM使用率。
编辑:
在Windows上测试后。问题仍然存在。我可以看到,使用PM2大约需要11MB,而使用Terminal / cmd大约需要4.5MB。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import random
import threading
import time
class Monitoring(object):
def parseNew(self):
ListsNumber = []
while True:
newtLists = random.sample(range(1,1000),999)
for numbers in newtLists:
if numbers not in ListsNumber:
ListsNumber.append(numbers)
threading.Thread(
target=self.threadingTest,args=(numbers,)
).start()
else:
print("sleeping")
time.sleep(random.randint(2,4))
def threadingTest(self,numbers):
print(numbers)
return
if __name__ == '__main__':
Monitoring().parseNew()
支持信息
Python 3.8.2,Ubuntu 20.04.1 LTS
--- PM2 report ----------------------------------------------------------------
Date : Fri Sep 11 2020 15:45:24 GMT+0200 (Central European Summe r Time)
===============================================================================
--- Daemon -------------------------------------------------
pm2d version : 4.4.0
node version : 14.6.0
node path : /usr/bin/pm2
argv : /usr/bin/node,/usr/lib/node_modules/pm2/lib/Daemon.js
argv0 : node
user : testing
uid : 1000
gid : 1000
uptime : 50586min
===============================================================================
--- CLI ----------------------------------------------------
local pm2 : 4.4.0
node version : 14.6.0
node path : /usr/bin/pm2
argv : /usr/bin/node,/usr/bin/pm2,report
argv0 : node
user : testing
uid : 1000
gid : 1000
===============================================================================
--- System info --------------------------------------------
arch : x64
platform : linux
type : Linux
cpus : Intel(R) Core(TM) i7-8700T cpu @ 2.40GHz
cpus nb : 12
freemem : 1734098944
totalmem : 16617046016
home : /home/tester
===============================================================================
另一个问题可能是我使用线程的方式,但我不这么认为,因为它使用pm2和cmd会提供两种不同的RAM使用情况
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)