Максимальное количество симуляционных процессов

Ядро говорит, что может поддерживать до 32768 идентификатор процесса в /proc/sys/kernel/pid_max , но сколько процессов может обрабатывать мой сервер одновременно, не жалуясь на ресурсы или зависает мой сервер,

Я знаю, что это зависит от каждого поведения процесса и ресурсов, но есть ли какое-то уравнение, которое имеет некоторые параметры, такие как Ram, cache, cpu core … и т. Д.?

Редактировать:

Мой сервер размещен на Linode со следующими спецификациями:

 RAM: 12 GB CPU: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz cpu MHz : 2499.970 cache size : 4096 KB Cores: 6 cores 

Мой сервер имеет несколько старых версий, которые запускают мое приложение,

 Apache 2.2 mysql 5.5 php 5.3 php5-fpm 

Существует формула для вычисления максимального числа активных PID или потоков. Выдержка из kernel/fork.c :

 /* * set_max_threads */ static void set_max_threads(unsigned int max_threads_suggested) { u64 threads; /* * The number of threads shall be limited such that the thread * structures may only consume a small part of the available memory. */ if (fls64(totalram_pages) + fls64(PAGE_SIZE) > 64) threads = MAX_THREADS; else threads = div64_u64((u64) totalram_pages * (u64) PAGE_SIZE, (u64) THREAD_SIZE * 8UL); if (threads > max_threads_suggested) threads = max_threads_suggested; max_threads = clamp_t(u64, threads, MIN_THREADS, MAX_THREADS); } 

Однако, как правило, другие ограничения будут затронуты в первую очередь. Если оперативная память и другие ресурсы продолжатся, то некоторые ограничения для групп будут, вероятно, первыми, где в основном это ограничение:

 $ cat /sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.max 12288 

Число, 12288, одинаково на моем старшем 3-гигабайтном сервере и моем новом 16-гигабайтном сервере.
И я могу проверить, пытаясь вырвать больше максимального числа, в результате чего сообщение в /var/log/kern.log :

 Feb 12 15:49:11 s15 kernel: [ 135.742278] cgroup: fork rejected by pids controller in /user.slice/user-1000.slice 

И проверяя номер, который у меня был в то время:

 $ cat /sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.current 12287 

top сказал около 12479

Но после того, как эти процессы закончились, я получил:

 $ cat /sys/fs/cgroup/pids/user.slice/pids.current 15 

top указано около 205 и примечание: 12479 – 205 + 15 = 12289

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

Лучшее, что вы можете сделать, это запустить сервер, изучить ресурсы и увеличить ресурсы на основе использования вашего сервера.

Ресурсы во многом зависят от скорости и бара компьютера. ПЗУ позволяет передавать больше процессов в память, а скорость позволяет быстро обрабатывать задачи, а затем переходить к следующему процессу.

Если загрузка вашей системы равна 1,00 (можно проверить, вернув top из командной строки), то она в основном работает при полном соучастии. Все, что связано с этим, – это переполнение, с которым компьютер работает, чтобы не отставать. Если нагрузка становится слишком высокой, конечно, это может занять много времени, чтобы догнать, что она будет в основном заперта.

Кстати, 1,00 на процессор. Поэтому, если у вас 4-ядерный процессор, загрузка будет заполнена на 4.00.

Взгляните на эту статью для получения дополнительной информации о загрузке:
http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

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

Другого ответа нет, чем зависит .

Что делает этот процесс? Спи, ожидая чего-то, не потребляя ОЗУ? Затем вы можете запустить 32768 процессов. Выполняет ли он огромные таблицы базы данных? Тогда гораздо меньше.

Кроме того, это зависит от вашего оборудования. Четырехъядерный 10-ядерный xeon будет обрабатывать более высокую нагрузку, чем малина …

У моего ноутбука 266 процессов, а нагрузка 0,66, что указывает на то, что большинство спали.