TLJH jupyterlab多人使用遭遇无法服务问题

本学期的一门课程,学生有接近100人,在使用Jupyterlab过程中,并发人数过多后就会导致其遇到无法服务问题,具体表征就是jupyter的kernel一直显示connecting,但始终无法连接。

第一次遇到此问题后,将班级分组、服务器硬件升级(内存从64G到320G),最近一次上课在练习wordcloud时发现又出现此问题,同时注意到,在出现问题时,服务器内存和cpu并没有占满,因此可以排除硬件问题。

网上搜索后,发现也有人遇到同样的问题,如:

TLJH Jupyterhub randomly times out

Performance, large machines and few users: connection issues #486

但这几个讨论最终都没有找到问题,但其中提到使用journalctl查看log信息,于是根据出现问题的时间查看其中出现的错误。

sudo journalctl -r --no-pager > tljh.log

找到第一个的错误是发生在traefik中,提示:502 Bad Gateway,但搜索一下,发现这个问题应该不是traefik导致的。

然后找到第二个错误:

zmq.error.ZMQError: Too many open files

看起来这个错误就很像是我们需要解决的问题。搜索了一下,发现这个问题是服务器默认限制了用户能同时打开的文件数,默认是1024。可以用下面这个命令测试:

ulimit -n

然后将在系统中将此参数调大至131072,在shell中测试发现此命令已经生效。但到了jupyterlab的terminal中测试此命令,突然发现有问题了,其结果一直是4096,而不论系统中将此值如何调大。

继续google之,发现此问题是有这个代码导致的:

https://github.com/jupyter/notebook/pull/5075/commits/e46a344fa68b8b33bed1d9962221365893c5d881

在此代码逻辑中,若系统的hard limit>4096,则设置min_open_files_limit为4096,但现在遇到的问题则有明显表示此值已经过小了,因此到这一步的处理方法就是直接修改tljh的代码,将这一行的代码修改为409600。

服务器对应的文件为:/opt/tljh/user/lib/python3.9/site-packages/notebook/notebookapp.py


已发布

分类

, ,

来自

标签:

评论

《“TLJH jupyterlab多人使用遭遇无法服务问题”》 有 1 条评论

  1. wlx 的头像
    wlx

    jupyterlab 4.1版本:
    修改 /opt/tljh/user/lib/python3.9/site-packages/jupyter_server/serverapp.py

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注