Мій досвід полягає в тому, що моє завдання з високою кількістю процесів вдалося досягти лише з:
kern.maxproc=2500 # This is as big as I could set it.
kern.maxprocperuid=2048
ulimit -u 2048
Перші два можуть увійти /etc/sysctl.conf
і змінити значення ulimit в startd.conf для надійного налаштування.
Оскільки tcp / ip був частиною того, що я робив, мені також потрібно було піддаватися
kern.ipc.somaxconn=8192
від замовчування 128.
Перш ніж я збільшив ліміти технологічних процесів, я отримував збої "вилки", недостатньо ресурсів. Перш ніж я збільшив kern.ipc.somaxconn, я отримував помилки "зламаної труби".
Це було в той час, коли на моєму монстері Mac, OS 10.5.7, потім 10.5.8, зараз 10.6.1, на моєму Mac Monster Mac, OS 10.5.7, потім 10.5.8, зараз працювало неабияке число (500-4000). У Linux на комп’ютері моїх босів він просто працював.
Я думав, що кількість процесів буде ближче до 1000, але здається, що кожен процес, який я розпочав, включав власну копію оболонки на додаток до фактичного елемента, який виконує фактичну роботу. Дуже святково.
Я написав демонстраційну іграшку, яка виходила приблизно так:
#!/bin/sh
while[ 1 ]
do
n=netstat -an | wc -l
nw=netstat -an | grep WAIT | wc -l
p=ps -ef | wc -l
psh=ps -ef | fgrep sh | wc -l
echo "netstat: $n wait: $nw ps: $p sh: $psh"
sleep 0.5
done
і спостерігав за максимальною кількістю процесів у ps -ef і зависанням у netstat, очікуючи TIME_WAIT
закінчення ... Зі встановленими межами я побачив 3500+ TIME_WAIT
елементів на піку.
Перш ніж я підняв ліміти, я міг «підкрастись» на порозі відмови, який почався нижче 1 К, але піднявся до високого значення 1190 .. щоразу, коли його натискали на невдачу, наступного разу це може зайняти трохи більше, ймовірно, через щось кеш, який розширювався до межі кожного разу, коли не вдалося.
Хоча мій тестовий випадок мав "зачекати", оскільки його остаточне твердження все ще залишалося ВІДБУДУВАННЯ відокремлених процесів після його виходу.
Я отримав більшу частину інформації, яку я використав із публікацій в Інтернеті, але не вся вона була точною. Ваш пробіг може відрізнятися.