Apache prefork 与 workder - 我的设置有什么问题?

Apache prefork 与 workder - 我的设置有什么问题?

我已经将 PHP 安装为 Apache 模块。我一直在prefork运行它。我读到过它worker会消耗更少的内存,同时提供更高的性能]1。因此,我编辑/etc/sysconfig/httpd并取消了注释:

HTTPD=/usr/sbin/httpd.worker

并重新启动 Apache。

但是,当我运行时httpd -l,仍然会出现以下情况:

core.c prefork.c http_core.c mod_so.c

我想这意味着prefork仍在运行但没有运行worker

现在,当我运行 top 命令时,我会得到httpd.workerCOMMAND,而不仅仅是httpd

我的问题是:我当前的设置是否错误?它们是否会损害服务器的性能或内存消耗?

我见过有人在同一个教程中包含 Apache worker 和 PHP FastCGI,所以我认为这两个是相辅相成的。我mod_php现在应该配置 PHP FastCGI 来替换吗?

顺便说一下,我正在使用 Amazon EC2。

答案1

在 RHEL 衍生产品上,httpd使用 prefork 并httpd.worker使用 worker。

更改 sysconfig 中的行会更改服务使用的二进制文件,但是当您直接运行 prefork 二进制文件时,您将始终看到 prefork 作为实时 MPM(并且运行httpd.worker -l将为您提供预期的结果。

因此,您的配置运行正常。

我见过有人在同一个教程中包含 Apache worker 和 PHP FastCGI,所以我认为这两个是相辅相成的。我现在应该配置 PHP FastCGI 来替换 mod_php 吗?

在 RHEL 衍生产品的默认配置中,当您切换到 worker 时,配置将自动切换到 ZTS 模块以确保线程安全。FastCGI 不是必需的,但如果这是您的首选部署,您绝对可以设置它。

相关内容