内核可能是未封闭的,导致内存泄漏

时间:2019-06-26 18:22:23

标签: python jupyter-notebook ipython jupyter jupyter-lab

我被迫在没有自己托管的Linux服务器上使用JupyterLab。 问题在于Jupyter进程占用大量内存;这已经出现在herehere之类的一些错误报告中。

无论如何,从引言中可以预期到,我没有任何须藤权利,因此无法亲自重启实验室(至少我认为这对我来说是不可能的)。

从HTOP截取的这张屏幕截图中可以看出我有什么奇怪之处:<​​/ p>

JupyterLab

启动实验室的bash命令包含许多子进程,这些子进程在整个使用时间内都看上去像是我打开和关闭的内核(服务器启动了一个月,而我打开和关闭了很多内核;没有一个拍照时运行)。

由于所有这些进程都以.json结尾,因此我认为这些可能是一些仍完整的运行时参数。

无论如何,我不想解决内存溢出错误。我的问题相当直截了当:

由于没有内核在运行:我可以杀死第三级上的所有进程并释放内存,否则会导致实验室崩溃吗?
所有第三级的过程看起来都与屏幕截图中的相同,没有其他内容。

最后一部分至关重要,因为我无法重新开始练习。

2 个答案:

答案 0 :(得分:1)

幸运的是,我偶然发现了该网站here。 在这里,笔者有一个与未发布的GPU内存有关的问题,还有很多ipykernel_launchers

他通过提议的激烈方式解决了这个问题。

  1. 首先,用ipykernel_launchers显示您所有的ps -aux|grep ipykernel_launcher(类似于问题中HTOP截屏的内容)。
  2. 使用kill -9 PID1 PID2 ...一步一步杀死每个进程。确保以(没有其他方式)杀死所有内容:
      

    / usr / bin / python3 -m ipykernel_launcher -f /content/.local/share/jupyter/runtime/kernel-95cb65b9-23eb-4f87-801b-d995ca30fc32.json

  3. 现在应该释放内存,并且JupyterLab应该仍在运行。

编辑:

感谢@EightBitTony on Unix&Linux-StackExchange,我现在知道有一条命令可以一步杀死所有进程:

for pid in $(ps -ef | grep -v "awk" | awk '/ipykernel_launcher/ {print $2}'); do kill -9 $pid; done

以这种方式进行操作时,请注意您的操作!

答案 1 :(得分:0)

实际上有一种内置的方式可以根据特定模式杀死进程:

pkill -f /<regex-pattern>/

就您而言,pkill -f ".*/ipykernel_launcher/.*" 可以解决问题