清理空闲的Notebook服务器#

空闲清理器会在用户Notebook服务器在特定时间段内未使用时自动将其关闭,以减少 JupyterHub 上的总资源使用量。

Notebook服务器会在内部监控活动,并以特定时间间隔(活动间隔)通知 JupyterHub 最近的活动。如果 JupyterHub 在特定时间段(空闲超时)后未收到任何活动通知,则该服务器被视为不活跃(空闲),并将被清理(关闭)。

空闲清理器是一个 JupyterHub 服务,默认安装并在 TLJH 中启用。它可以使用 tljh-config 进行配置。对于高级用例,例如清除旧用户数据,空闲清理器配置可以超出 tljh-config 选项,使用自定义的 jupyterhub_config.py 片段

默认设置#

默认情况下,JupyterHub 每 10 分钟会 ping 用户 Notebook 服务器以检查其状态。任何空闲超过 1 小时的服务器都将被清理。

services.cull.every = 600
services.cull.timeout = 3600

由于服务器没有设置最大运行时间,因此一个活跃的服务器无论运行了多久都不会被关闭。

services.cull.max_age = 0

如果在清理过程之后,有用户没有活跃的 Notebook 服务器,默认情况下,用户不会随其 Notebook 一起被清理,并将继续存在。

services.cull.users = False

如果正在使用命名服务器,它们在被清理后不会被移除。

services.cull.remove_named_servers = False

配置空闲清理器#

可用的配置选项有

空闲超时#

空闲超时是服务器在被清理之前可以不活动的最长时间(以秒为单位)。超时可以通过以下方式配置

sudo tljh-config set services.cull.timeout <max-idle-sec-before-server-is-culled>
sudo tljh-config reload

空闲检查间隔#

空闲检查间隔表示 Hub 将多久(以秒为单位)检查一次是否有空闲服务器需要清理。它可以通过以下方式配置

sudo tljh-config set services.cull.every <number-of-sec-this-check-is-done>
sudo tljh-config reload

最大运行时间#

最大运行时间设置服务器应运行的时间(以秒为单位)。超过最大运行时间的服务器,即使它们是活跃的,也会被清理。最大运行时间为 0 将停用此选项。最大运行时间可以通过以下方式配置

sudo tljh-config set services.cull.max_age <server-max-age>
sudo tljh-config reload

移除命名服务器#

命名服务器关闭后将其移除。仅当 Hub 安装上启用了命名服务器时适用

sudo tljh-config set services.cull.remove_named_servers True
sudo tljh-config reload

用户清理#

除了服务器,还可以清理用户。这通常适用于临时用户情况,例如 tmpnb。用户清理可以通过以下命令激活

sudo tljh-config set services.cull.users True
sudo tljh-config reload

并发#

同时删除大量用户可能会使 Hub 变慢。可以配置对 Hub 发出的并发请求数量,使用

sudo tljh-config set services.cull.concurrency <number-of-concurrent-hub-requests>
sudo tljh-config reload

因为 TLJH 用于少量用户,所以可能需要修改并发限制的情况应该很少见。

禁用空闲清理器#

空闲清理服务默认是启用的。要禁用它,请使用以下命令

sudo tljh-config set services.cull.enabled False
sudo tljh-config reload