ulimit - 一项服务影响另一项服务

ulimit - 一项服务影响另一项服务

我们在 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 条。

相关内容