清理空闲的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