Answers:
到目前为止,在确定线程与进程时,这些是我的首要考虑因素:
线程将比进程占用更少的驻留内存。是的,通过动态链接的库,Apache Control进程及其子进程之间共享大量内存,但是每个新进程都需要实例化您已启用的所有模块。
通过比较每个进程的内存使用情况(例如,每个进程有5个进程和1个线程,或每个有5个进程和25个线程),可以轻松地测试这一点。以我的情况而言,每个子进程大约占用7 MB,而不管线程的数量。
+对于线程
加载新进程所需的时间和CPU周期要比线程启动花费的时间更长。可以通过验证通过“ ab”投放的平均页面数量来进行测试。
+对于线程
进程线程全部取决于进程。这里最大的担心是,如果进程发生任何事情,它将影响与之关联的所有线程。如果您使用的是带有多个线程的单个进程,那么当进程死亡时,线程也会死亡。因此,如果您愿意的话,更多的进程将导致更好的分离,从而带来更大的“故障”容忍度。
+对于流程
与(3)有关,对于PHP之类的模块,它们的内存由Process加载并在所有线程之间共享。这意味着,如果您的php的memory_limit设置为100Mbs,且以下25个线程,则从技术上讲,在最大负载下,每个线程最多可以分配每个4MB(当然,这种方式不会发生,有些会占用内存,有些会饿)。
因此,最后,这实际上取决于您的用例。也就是说,您将需要最大化使用的线程数量,以减少内存使用并提高响应速度。但是,您必须在适当数量的进程之间进行平衡,以实现更好的容错能力。
当然我不是专家,因为直到最近我才开始对此感到担忧,所以我期待着在这里看到其他答案!