ipykernel_launcher 进程正在消耗内存,无法终止

ipykernel_launcher processes are consuming memory, Not able to kill

我机器上的这些僵尸 ipykernel_launcher 进程是什么,它们占用了大量内存:

这是 htop 命令的输出,但我 ps 对于那些进程,(杀死它们)我不认为它们是:

ps -ef|grep ipykernel

不确定,如何摆脱这些内存占用!

您在 htop 而不是 ps 中看到所有这些进程的原因是 htop 正在显示线程(请参阅 https://serverfault.com/questions/24198/why-does-htop-show-lots-of-apache2-processes-by-ps-aux-doesnt)。在 htop 中键入“-H”以切换显示线程。

自动停止空闲内核

关于一般的 Jupyter notebook 进程:内核是小型计算引擎,即使在不活动时也会消耗大量资源(主要是内存)。这就是为什么应该鼓励用户在不使用时停止 运行ning 内核。 问题是,即使关闭一个选项卡或整个浏览器,内核仍保持 运行ning,因此人们忘记了内核!

由于用户不太可能关闭内核,请考虑通过在 Jupyter 配置文件 jupyter_notebook_config.py.

中配置参数 NotebookApp.shutdown_no_activity_timeoutInt 来停止空闲内核

NotebookApp.shutdown_no_activity_timeoutInt.
Default: 0

Shut down the server after N seconds with no kernels or terminals running and no activity. This can be used together with culling idle kernels (MappingKernelManager.cull_idle_timeout) to shutdown the notebook server when it’s not in use. This is not precisely timed: it may shut down up to a minute later. 0 (the default) disables this automatic shutdown.

另请参阅这些属性:

# shutdown the server after no activity for an hour
c.ServerApp.shutdown_no_activity_timeout = 60 * 60
# shutdown kernels after no activity for 20 minutes
c.MappingKernelManager.cull_idle_timeout = 20 * 60
# check for idle kernels every two minutes
c.MappingKernelManager.cull_interval = 2 * 60

如果这不起作用,您可能需要 运行 一个 cron 作业以在一定数量后用 kill 杀死 ipykernel 进程经过的时间(参见 https://unix.stackexchange.com/questions/531040/list-processes-that-have-been-running-more-than-2-hours)。

One-time解法

解决问题的一个快速方法是重启 Jupyter notebook/Jupyter Hub。这将停止所有内核。