fork: retry: Resource temporarily unavailable
我正在调查哪个进程导致了这个问题,并想知道这个机制是如何工作的。
#!/bin/bash
#test.sh
for i in `seq 1 13000`; do
echo $i
sleep 60&
done
运行此脚本(./ test.sh)后,消息显示在下面。
...
12265
12266
12267
12268
./test.sh: fork: retry: Resource temporarily unavailable
./test.sh: fork: retry: Resource temporarily unavailable
./test.sh: fork: retry: Resource temporarily unavailable
./test.sh: fork: retry: Resource temporarily unavailable
./test.sh: fork: Resource temporarily unavailable
ps -elf |wc
约为133xx行。 ulimit -u
是1030977.
由于流程计数达到1030977,fork: retry: Resource temporarily unavailable
会显示吗?如果为true,我如何知道当前计数以及如何知道哪个进程分叉大多数进程?
答案 0 :(得分:2)
在/etc/security/limits.conf中为用户或所有用户增加“nproc”参数的值
示例:
@student hard nproc 2048
检查:可根据需要增加nproc值。 这里的模板是:
<domain> <type> <item> <value>
"@student" -- Replace it with user for which limit has to be applied. For root user, username is "root"
"hard" for enforcing hard limits
"nproc" for max number of processes
Last column is value.
要查找哪个进程正在分析大多数进程,请使用命令“pstree”。为了确定计数,请使用以下方法。
$ps | gawk '{count[$NF]++}END{for(j in count) print ""count[j]":",j}'|sort -rn|head -n 5
示例:
#ps | gawk '{count[$NF]++}END{for(j in count) print ""count[j]":",j}'|sort -rn|head -n 5
3: bash
1: sudo
1: sort
1: ps
1: CMD