Назад | Перейти на главную страницу

Почему я не могу запустить более 1000 процессов в Solaris 11?

Пытаюсь запустить более 1000 процессов, а на 999 зависает.

например

#!/usr/bin/env zsh
for i in {1..$1} ; do
  sleep 300 &
done

Затем запустите его,

$ ./launchsleep.sh 3000                                                                         
./launchsleep.sh:4: job table full

В ulimit -u настройка может быть здесь.

Оказывается, в zsh (и в большинстве других оболочек) есть таблица заданий с максимальным размером. Эта таблица отслеживает фоновые процессы, и когда она заполняется, вы больше не можете запускать фоновые процессы.

Мое обходное решение состояло в том, чтобы изменить сценарий для запуска процессов демона, а не группы фоновых процессов.

например

launch.sh:
#!/usr/bin/env zsh
for i in {1..$1} ; do
  ./dosleep.sh
done

dosleep.sh:
#!/usr/bin/env zsh
nohup sleep 300 &

Кроме того, как упоминал @Iain, Solaris имеет ограничение на количество процессов, которые может запускать пользователь (ulimit -u). В Solaris 11, чтобы увеличить это ограничение, отредактируйте / etc / project и увеличьте количество процессов project.max.