AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 45042
Accepted
Aron Rotteveel
Aron Rotteveel
Asked: 2009-07-25 00:47:30 +0800 CST2009-07-25 00:47:30 +0800 CST 2009-07-25 00:47:30 +0800 CST

安装哪个:Apache Worker 还是 Prefork?每个的(缺点)优点是什么?

  • 772

根据对Prefork和Worker MPM 的描述,似乎 prefork 类型有些过时,但我真的找不到这两种类型的适当比较。

我想知道的:

  • 两个版本有什么区别?
  • 每种服务器类型的(缺点)优点是什么?
  • 是否有根据条件选择哪种类型的基本准则?
  • 两者之间有什么大的性能差异吗?
apache-2.2 mpm-worker mpm-prefork
  • 5 5 个回答
  • 57903 Views

5 个回答

  • Voted
  1. Best Answer
    womble
    2009-07-25T01:04:02+08:002009-07-25T01:04:02+08:00

    正如文档所说,如果您需要避免线程化以与非线程安全库兼容,则应该使用 prefork MPM。通常,任何重要的 Apache 模块(mod_php或者更准确地说,它链接到的无数扩展和库——作为典型示例)都有某种非线程安全的库(或具有非线程安全的库)。里面的安全代码),所以除非你使用的是漂亮的 Apache 安装,否则我会选择 prefork MPM。

    • 40
  2. adaptr
    2012-04-03T05:21:23+08:002012-04-03T05:21:23+08:00

    在为大量(>100)并发连接提供服务的同时运行不安全扩展的经典解决方案是在 fastCGI(mod_fcgid,本机 apache 模块)上运行 PHP,并将动态请求代理到来自运行 Worker MPM 的 apache 实例的请求。

    当提供静态和动态内容的混合时,这将使您能够使用适度的内存(4~8GB)从几百个扩展到> 1000个并发连接。

    当然,您还应该研究前端缓存解决方案作为整体部署的一部分(memcached、varnish)。

    或者,升级到 apache 2.4 及其原生事件MPM,它以一种大大改进的方式处理并发(线程在连接时被触发,而不是等待轮询。)

    • 14
  3. aleemb
    2012-10-22T09:02:04+08:002012-10-22T09:02:04+08:00

    自问题发布以来已经过去了大约 3 年,但即使使用 PHP,我也建议您使用 worker MPM 而不是 pre-fork,以获得更好的性能。

    至于差异,预分叉是非线程的,因此服务器为每个客户端请求分叉一个进程(它预分叉以预期新请求,因此分叉不会占用响应时间)。由于请求是在一个单独的进程中的服务器,这通常会比你的内存和 CPU 消耗更多。worker 带来的多线程更轻,内存利用率更高。

    • 7
  4. Marcin
    2009-07-25T05:33:41+08:002009-07-25T05:33:41+08:00

    这是您所服务的非常特别的东西。如果你正在做很多小的静态连接,线程会更轻更快。如果您只是不断产生几个大型应用程序,那么 prefork 可能由于它的成熟和稳定性而具有优势。为什么不直接设置你需要的东西,测试一个,换掉 MPM 模块,再试一次,看看哪个更适合你?

    • 2
  5. sarath
    2012-11-17T07:30:15+08:002012-11-17T07:30:15+08:00

    这需要您将拥有的流量类型和种类。而且首先您需要了解 prefork 和 worker 之间的主要区别。希望下面的文章能帮助你弄清楚! http://slashroot.in/how-is-nginx-different-from-apache

    • 1

相关问题

  • 在您分发的应用程序中使用 Apache HTTPD 运行 SSL 的最佳方式是什么?

  • 阿帕奇的替代品

  • 如何强制我的网址始终以 www 开头?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • mod_rewrite 不转发 GET 参数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve