我遇到一个问题,在我的服务器上运行同一个 Python 程序的多个实例导致某些作业引发以下错误:
File "/home/joe/workspace/20211016_235943_532300_ltr/venv38/lib/python3.8/site-packages/paramiko/client.py", line 406, in connect
t.start_client(timeout=timeout)
File "/home/joe/workspace/20211016_235943_532300_ltr/venv38/lib/python3.8/site-packages/paramiko/transport.py", line 653, in start_client
self.start()
File "/usr/local/lib/python3.8/threading.py", line 852, in start
_start_new_thread(self._bootstrap, ())
RuntimeError: can't start new thread
错误消息很明确,看起来建立 SSH 连接的 Paramiko 库无法创建新线程。我在 Stackoverflow 上阅读了有关此问题的文章,甚至尝试实施此解决方案-
$ ps -fLu exec | wc -l
3956
$ ulimit -u
16384
$ 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) 513699
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 16384
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
这并没有解决问题,我找不到更好的解决方案。此服务器的唯一目的是执行这些工作,以便我可以指定系统可以支持的任何最大值。
如能得到有关如何解决该问题的任何建议,我将非常感激。
一些相关的系统信息:
$ free -h
total used free shared buff/cache available
Mem: 125G 5.0G 1.3G 93M 119G 120G
Swap: 62G 36K 62G
$ cat /proc/sys/kernel/threads-max
1027399
$ cat /proc/sys/kernel/pid_max
32768
$ cat /proc/sys/vm/max_map_count
65530