可能是因为您已达到用户打开文件数的限制。
我相信每个进程/线程都会消耗一个或多个文件描述符。
例如,当您的用户达到此限制时,"no" shell 命令将无法工作,因为 shell 命令会分叉出一个进程来执行(您会看到类似“-bash: fork: retry: Resource temporarily unavailable”的错误)。
我遇到了这个问题,并发现只有当前用户无法生成进程... 其他用户没有受到影响。
要解决这个问题,请增加您的 ulimit -n (最大打开文件数)设置... 详细信息如下。
您可以使用命令查看您的用户限制:
ulimit -a
使用以下方法提高您的最大文件限制:
ulimit -n 65536
这是我现在拥有的内容:
$ 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) 256797
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 75000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 100000
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
查看系统的所有显式限制:
cat /etc/security/limits.conf
请注意:我使用的是Oracle Linux 6.3 - 不同的发行版可能会略有不同。
* soft nproc 1000
将这个值提高到5000解决了我的“无法创建新的本地线程”问题。 - arpadf