Linux
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
但問題並沒有消失。我應該查看任何其他每個使用者的限制嗎?
事實證明,這是一個與 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 條下。