Как узнать текущий счетчик процессов и какой процесс разветвляет большинство процессов? - PullRequest
0 голосов
/ 08 июня 2018
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.

Показывает ли fork: retry: Resource temporarily unavailable из-за того, что число процессов достигает 1030977?Если это правда, как узнать текущий счетчик и как узнать, какой процесс разветвляется у большинства процессов?

1 Ответ

0 голосов
/ 08 июня 2018

Увеличить значение параметра "nproc" для пользователя или всего пользователя в /etc/security/limits.conf

Пример:

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...