最大数量的运行过程

内核说它可以在/proc/sys/kernel/pid_max支持多达32768个进程ID,但是我的服务器可以同时处理多少进程而不会抱怨资源或挂起我的服务器,

我知道它取决于每个进程行为和资源需求,但是有某种方程式有一些参数,如Ram,缓存,cpu核心……等等?

编辑:

我的服务器托管在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); } 

但是,通常会首先触及其他限制。 如果RAM和其他资源持续,那么一些cgroup限制可能是第一个,其中基本上限制是:

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

我的旧3 GB服务器和新的16 GB服务器上的数字12288相同。
我可以通过尝试超出最大数量进行测试,从而在/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

因此,您必须使用诸如top之类的应用程序来实际研究负载,以评估运行服务器类型和流量所需的资源。

除了依赖,没有其他答案。

这个过程有什么作用? 睡觉,等待什么而不消耗RAM? 然后你可以运行32768个进程。 它运行巨大的数据库表吗? 然后少得多。

此外,它取决于您的硬件。 一个四插槽10核xeon将处理比覆盆子更高的负载……

我的笔记本电脑有266个进程,负载为0.66,表明大多数都在睡觉。