Apache生产运行缓慢。在寻找答案一段时间后,我终于进入#apache IRC频道,专业人士让我使用以下命令检查apache模式:
sudo apachectl -V
并被警告发现Server MPM是prefork。他们强调说,请勿在生产服务器上使用PREFORK。事实证明,Ubuntu软件包(大概是从Debian继承的?)坚持要求以prefork模式运行apache,尽管事实是,推荐的与Apache一起运行PHP的方法显然推荐了proxy_fcgi和php-fpm,然后是fcgid并最终说您不应该这样做使用前叉:
为什么您不应该再将mod_php与prefork mpm一起使用
- 始终将mod_php加载到每个httpd进程中。即使httpd提供静态/非PHP内容,该内存也正在使用中。
- mod_php不是线程安全的,会迫使您坚持使用prefork mpm(多进程,无线程),这是最慢的配置
该页面还包含有关PHP-FPM的一些详细信息,但这似乎有些复杂和不清楚,并且似乎涉及许多手动配置。我感到失望和惊讶,Ubuntu 16没有fastCGI模式之类的软件包选项。
我尝试使用a2enmod 将apache切换到事件模式,并且尝试备份apache时,出现错误:
Apache正在运行线程MPM,但您的PHP模块未编译为线程安全的。您需要重新编译PHP
无论如何,我想知道是否有人通过尽可能少地依赖软件包安装程序来获得一些最少的逐步说明,以使fastCGI模式在具有PHP 7.0 的 Ubuntu 16上运行。我目前正在查看许多解释不清,含糊不清的说明,而且我担心因决策错误而破坏了我的生产环境。
同样,有人应该将mpm-event添加为标记选项。这就是#apache IRC家伙推荐的。