哪种方式运行 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 配合得很好。无需配置任何东西。