我的项目默认在 Prefork MPM 下运行。现在我遇到了一些速度变慢的问题,我的网络出现超时错误。在不同的论坛上搜索后,我发现建议使用 worker 模块,并且我看到了不同的更改方法,但最终对我的项目没有任何效果。
我使用这个脚本在 apache2.2 下运行我的项目
python manage.py runmodwsgi --setup-only --host=0.0.0.0 --port=8000 --reload-on-changes–服务器根目录=/mod_wsgi/
该脚本在文件夹“mod_wsgi”中创建我的 apachectl,在文件夹内我使用“./apachectl -V”来查看项目中正在运行的模块,并看到这个
服务器版本:Apache/2.2.34 (Unix) 服务器构建时间:2017 年 11 月 1 日 18:47:16 服务器模块幻数:20051115:43 服务器加载:APR 1.5.1、APR-Util 1.4.1 编译使用:APR 1.5.1、APR-Util 1.4.1 架构:64 位 服务器 MPM: Prefork 线程:否 分叉:是(可变进程数) 服务器编译为.... -D APACHE_MPM_DIR="服务器/mpm/prefork" -D APR_HAS_SENDFILE -D APR_HAS_MMAP ...
因此,为了将其从 prefork MPM 更改为 Worker,我尝试取消注释行:HTTPD=/usr/sbin/httpd.worker 在此路径 /etc/sysconfig/httpd 中的文件中,然后我重新启动并再次运行它,但没有改变它。
我在网上看到的另一件事是更改文件 /etc/httpd/conf.modules.d/00-mpm.conf,但在我的实例中这条路径并不存在。
我还尝试用这个附加标志运行我的初始脚本./configure --with-mpm=worker但似乎不起作用。
另外,我还不完全确定为什么会发生这种情况,如果我只输入“apachectl -V”而不输入“。/”,我会看到 MPM 更改为 worker,但不在我的 mod_wsgi 文件夹中的 apachectl 中。
有什么建议可以改变我的项目的 MPM 吗?提前谢谢。
答案1
“重新启动”含义不明确(可能会翻译为 apachectl graceful 或等效命令)。更改 MPM 时,请务必先停止,然后启动。
答案2
在您的 Amazon Linux AMI 中,您可以在此处更改您的 MPM -/etc/httpd/conf.modules.d/00-mpm.conf
提示——您应该考虑使用worker
或event
模块而不是prefork
。