我们在 RHEL 7.4 服务器上托管 2 个服务:Jupyterlab 和 RStudio。个人用户的 Jupyterlab 会话往往会打开大量文件:
# lsof|grep e613664|wc -l
31581
我们的问题是,拥有活动 Jupyterlab 会话(因此有许多打开的文件)的用户无法使用 RStudio。他们收到各种“无法分叉”、“资源不可用”错误,甚至无法使用 RStudio。一旦我们终止了他们的 Jupyterlab 会话,RStudio 就开始为他们正常工作。
最初,我认为问题是由大量打开的文件引起的。每个用户的进程数量很少,最多几十个。因此,我将 ulimit -n 值全局更改为 65k。我们当前的 ulimit 设置:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31136
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 16384
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
但问题并没有消失。我还应该注意其他每用户限制吗?
答案1
事实证明这是一个与RStudio相关的问题。下/etc/rstudio/profiles
我们需要增加参数max-processes
(相当于nproc
)。我们将每用户进程限制为 120 个,以限制大量并行化。尽管遇到此问题的用户在操作系统级别只有几个正在运行的进程,但事实证明数量很少,并且在将值增加到 后max-processes = 800
,问题消失了。更多记录在这里:https://docs.rstudio.com/ide/server-pro/r-sessions.html根据第 5.2.5.2 条。