Aro*_*eel 56 mpm-worker mpm-prefork apache-2.2
根据对Prefork和Worker MPM的描述,prefork 类型似乎有些过时,但我真的找不到这两种类型的正确比较。
我想知道的是:
wom*_*ble 40
正如文档所说,如果您需要避免线程化以与非线程安全库兼容,则应使用 prefork MPM。通常,任何非平凡的 Apache 模块(mod_php
——或者,更准确地说,它链接到的无数扩展和库——作为规范示例)都有某种非线程安全库(或者具有非线程安全库)安全代码),所以除非你使用的是非常好的 Apache 安装,否则我会选择 prefork MPM。
ada*_*ptr 14
在服务大量(> 100)并发连接时运行不安全扩展的经典解决方案是在 fastCGI(mod_fcgid,本机 apache 模块)上运行 PHP,并代理来自运行 Worker MPM 的 apache 实例的动态请求。
当提供静态和动态内容的混合时,这将使您能够以适度的内存 (4~8GB) 从几百个并发连接扩展到 >1000 个并发连接。
当然,您还应该研究前端缓存解决方案作为整体部署(memcached、varnish)的一部分。
或者,升级到 apache 2.4 及其本机事件MPM,它以大大改进的方式处理并发(线程在连接时被触发,而不是等待轮询。)
小智 6
问题发布已经过去了大约 3 年,但我建议您使用 worker MPM 而不是 pre-fork,即使使用 PHP,以获得更好的性能。
至于差异,预分叉是非线程的,因此服务器为每个客户端请求分叉一个进程(它预分叉以预测新请求,因此分叉不会占用响应时间)。由于请求是在单独进程中的服务器,因此这通常会大大增加您的内存和 CPU 的负担。Worker 带来了多线程,更轻巧,内存利用率更高。
归档时间: |
|
查看次数: |
57152 次 |
最近记录: |