Apache 的 mod_php 还是 FastCGI?哪个对 WordPress 有好处?

2024-02-04

我对在不同配置(如 mod_php、cgi、FastCGI 等)中运行 PHP 有基本的了解。

在我的发现和测试中,我发现 FastCGI 稍好一些。我最喜欢FastCGI 对SuEXEC 的支持。等等,我不想再在这里涉足基准测试业务了。如果您上网冲浪,您会发现人们证明一种方法在每秒处理的请求数量方面比另一种方法更快。嗯,它的指标很好,但我对不同的因素感兴趣,这是我的问题......

  1. 哪种方式运行 PHP 消耗的内存更少?
  2. 而且哪种方法消耗的内存几乎是恒定的。我发现使用 mod_php 我的服务器内存使用量每隔几秒就会在 300MB 到 800MB 之间波动。
  3. 但对于 FastCGI,服务器的第一次响应来得很晚。我发现 FastCGI 每个网页请求都有一个初始延迟。一旦服务器的第一个响应到达,其他项目(如图像、CSS、JS)加载速度就会相当快。
  4. 两者混合运行可以吗?我在专用服务器上有 5 个站点。如果我用 mod_php 运行一些并用 FastCGI 休息可以吗?
  5. 我确信我的服务器宕机主要是由于 mod_php 内存使用不当造成的。我检查了所有脚本。有什么方法可以确保服务器上的内存消耗保持几乎恒定吗?
  6. .htaccess 的复杂性是否会显着影响内存使用?如果是,这是否是导致服务器内存不足的单一原因?
  7. apache MPM prefork/worker 设置会影响内存消耗吗?它们对 mod_php 和 FastCGI 模式的影响相同吗?
  8. 当我运行“top”命令时,我看到 apache (httpd) 消耗了大约 40MB 的内存。有许多 httpd 实例正在运行。除此之外,FastCGI 还分叉了一些大小相似的进程。 httpd 进程的正常内存大小是多少?
  9. 当我在我们所有的网站上运行 Wordpress 时,在这种情况下哪一个是好方法?
  10. FastCGI/SuExec 可以与 APC 一起正常工作吗?我是否需要重新配置 APC 才能与 SuEXEC 和 FastCGI 一起使用?

请注意,我对在 DIGG 或流量高峰中生存不太感兴趣。我想要一种可以使服务器稳定且可预测的方法。

抱歉,如果我感到困惑,但我真的很混乱。我有 512MB 物理 RAM、400MB 交换空间,但我的服务器内存快用完了。平均内存需求约为 350MB,只是内存使用量激增导致内存在几秒钟内不可用,如果在这几秒钟的窗口中收到很少的额外点击,apache 就会崩溃,而 mysql 和所有其他家伙则保持正常运行。

请大家帮帮我。我不会购买更多的内存或硬件。我非常确定问题出在我的配置中。抱歉,如果我听起来傲慢或无知。


哪种方式运行 PHP 消耗的内存更少?

我假设每个 PHP 处理的请求它们或多或少是相同的。但是,如果您也将 mod_php 加载到 apache 服务图像中,那么我认为由于提供静态文件,您的内存占用会更高。

而且哪种方法消耗的内存几乎是恒定的。我发现使用 mod_php 我的服务器内存使用量每隔几秒就会在 300MB 到 800MB 之间波动。

你可以使两者都非常恒定。如果您仔细设置 MaxClients、MinSpareServers 和 MaxSpareServers,您几乎可以知道有多少进程正在运行。如果您还在 PHP 配置中设置了 memory_limit,您可以计算出您需要多少内存。 您也可以对 fcgi 执行相同的操作,因为您可以决定正在运行的进程数量。

但对于 FastCGI,服务器的第一次响应来得很晚。我发现 FastCGI 每个网页请求都有一个初始延迟。一旦服务器的第一个响应到达,其他项目(如图像、CSS、JS)加载速度就会相当快。

这没有道理。我不确定你的情况为什么会发生这种情况。

两者混合运行可以吗?我在专用服务器上有 5 个站点。如果我用 mod_php 运行一些并用 FastCGI 休息可以吗?

我猜,但这将是维护的一场噩梦,并且可能更难以配置节省内存。我认为恰恰相反。

我确信我的服务器宕机主要是由于 mod_php 内存使用不当造成的。我检查了所有脚本。有什么方法可以确保服务器上的内存消耗保持几乎恒定吗?

按照我上面概述的方式配置内存和进程,并保持监控。

.htaccess 的复杂性是否会显着影响内存使用?如果是,这是否是导致服务器内存不足的单一原因?

我不这么认为。每个目录的 .htaccess 可能会减慢速度,但除非 Apache 中存在一些严重的错误,否则它不会导致大量内存消耗。

apache MPM prefork/worker 设置会影响内存消耗吗?它们对 mod_php 和 FastCGI 模式的影响相同吗?

可能会,但我建议远离worker,因为PHP大多不是线程安全的。

当我运行“top”命令时,我看到 apache (httpd) 消耗了大约 40MB 的内存。有许多 httpd 实例正在运行。除此之外,FastCGI 还分叉了一些大小相似的进程。 httpd 进程的正常内存大小是多少?

最小 30MB。上限取决于您的应用程序(我见过大约 1GB 的情况)

当我在我们所有的网站上运行 Wordpress 时,在这种情况下哪一个是好方法?

这可能是一个品味问题。我最近从 apache 转向 nginx+fastcgi。需要一些时间来适应,但效果很好。使用 wordpress 没有任何问题(即使使用超级缓存也没有问题,超级缓存与 Web 服务器有关)。

FastCGI/SuExec 可以与 APC 一起正常工作吗?我是否需要重新配置 APC 才能与 SuEXEC 和 FastCGI 一起使用?

我没有使用 suExec,但 fastcgi 与 APC 配合得很好。无需配置任何东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache 的 mod_php 还是 FastCGI?哪个对 WordPress 有好处? 的相关文章

  • 使用 md5 加密的 PHP 和 Mysql 查询出现问题

    我使用普通的 php mysql 插入查询并使用 md5 加密密码 这是插入查询 sql mysql query INSERT INTO user username password role approved values usernam
  • PHPExcel下载文件

    我想下载使用 PHPExcel 生成的 Excel 文件 我按照以下代码PHPExcel 强制下载问题 https stackoverflow com questions 26265108 phpexcel force download i
  • 压缩 zend Framework 2 的 html 输出

    我目前正在 PHP 5 4 4 上使用 Zend Framework 2 beta 开发个人 web 应用程序以用于自学目的 我想知道是否可以在 html 输出发送到浏览器之前拦截它 以便通过删除所有不必要的空格来缩小它 我怎样才能在ZF2
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • 在 PHP 中将 CSV 写入不带括号的文件

    是否有本机函数或实体类 库用于将数组写入 CSV 文件中的一行而无需封装 fputcsv将默认为 如果没有为封装参数传入任何内容 谷歌让我失望了 返回一大堆有关的页面的结果 fputcsv PEAR 的库做的事情或多或少与fputcsv 工
  • 重复使用相同的卷曲手柄。性能大幅提升?

    在 PHP 脚本中 我对不同的 URL 执行了许多不同的curl GET 请求 一百个 将重复使用来自curl init提高性能 还是与请求的响应时间相比可以忽略不计 我这么问是因为在当前的架构中保持相同的句柄并不容易 交叉发布自我应该关闭
  • 按类别 ID 获取产品

    我正在为 woocommerce 编写一个定价表插件 用户插入带有 woocommerce 产品类别 ID 的短代码 更新页面后 用户可以看到一个包含产品名称和价格列表的表格 我怎样才能获得带有类别ID的产品列表 在下面的代码中 pid是用
  • 如何将 PHPMailer 与 Codeigniter 3 集成

    嗨 我正在尝试使用PHPMailer 库 https github com PHPMailer PHPMailer来自我的 Codeigniter 应用程序中的 GitHub 我下载了代码并解压到我的application library文
  • Magento补丁安装失败

    从以下位置下载并运行 Magento PHP 5 4 支持补丁 Magento CE v1 7 0 0 1 7 0 2 时http www magentocommerce com download http www magentocomme
  • 在Wordpress中通过API创建新用户时如何发送电子邮件密码?

    可以使用以下行通过 API 创建新用户 user id wp insert user user data 我想知道如何向新创建的用户发送包含其密码的电子邮件 Wordpress API 中是否有任何函数可以处理这项工作 还是我应该自己创建并
  • mod_rewrite :如果/否则输入 RewriteRule

    以下重写将以数字 4 开头的字符串作为变量传递给 process php RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule 4 process
  • php 如何统计文件夹中的文件数量?

    我想让用户能够在自己的文件夹中上传一些文件 图片 但只有当该文件夹包含的图片少于五张时才可能 如果已经有 5 张图片 脚本必须让用户知道他 她的文件夹已满 所以 我想知道php中是否有函数可以计算文件夹中的文件数量 或者 php 中有其他方
  • apache htaccess 将第一个段映射为参数而不干扰其他参数

    这可能是一个经典的 htaccess 问题 但我仍然找不到适合我的具体情况的问题 这是closest https stackoverflow com questions 9299793 apache httaccess rewriting我
  • 未捕获的异常“Google_IO_Exception”,消息为“HTTP 错误:无法连接”

    我有一个任务 查询 运行一些从 gmail 邮箱检索数据的 php 代码 直到上周五 2015 年 4 月 10 日 它一直工作正常 现在我收到以下错误日志 E 11 58 26 094 2015 04 15 200 3 38 KB 14
  • PHP中如何识别服务器IP地址

    PHP中如何识别服务器IP地址 对于服务器 ip 来说是这样的 SERVER SERVER ADDR 这是港口的 SERVER SERVER PORT
  • 如何在html中制作多行类型的文本框?

  • php 表单提交 - Q2

    我对这个虚拟问题感到抱歉 这是我的简单 PHP 表单 其中包含两个 SQL 表和 ADD 提交 按钮 我希望将人员从 Test1 转移到 Test2 很多事情都很好 只有提交按钮不起作用 因此 Test2 表没有反馈 Revised 现在提
  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d

随机推荐