Apache prefork与工作者 – 我的设置有什么问题?

我已经安装PHP作为Apache模块。 我已经prefork运行这一切。 我读过这个worker会消耗更less的内存,同时提供更高的性能] 1 。 所以,我编辑了/etc/sysconfig/httpd并取消注释:

 HTTPD=/usr/sbin/httpd.worker 

并重新启动Apache。

但是,当我运行httpd -l ,我仍然得到以下内容:

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

这意味着prefork仍然在运行,但不是worker ,我想。

现在当我运行顶部的命令,我得到httpd.worker COMMAND列而不是只是httpd

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

我已经看到人们将Apache工作者和PHP FastCGI包含在相同的教程中,所以我假设这两者是相互关联的。 我应该configurationPHP FastCGI来取代mod_php吗?

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

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

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

所以,你的configuration工作正常。

我已经看到人们将Apache工作者和PHP FastCGI包含在相同的教程中,所以我假设这两者是相互关联的。 我应该configurationPHP FastCGI来取代mod_php吗?

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