3

我的 EC2 Micro 实例存在内存问题,导致它终止了我的 MySQL 进程。

我已经阅读了很多关于调整 Apache 以限制内存消耗的内容,并且正在寻找编辑 Prefork MPM 设置。问题是 - 当我进入 httpd.conf 时,我没有看到任何 MPM 模块的提及。

我一直在环顾四周,我能找到的唯一参考是在 /etc/httpd/conf.modules.d/00-mpm.conf 中,我可以看到应该加载 prefork 模块。(LoadModule mpm_prefork_module modules/mod_mpm_prefork.so)

当我执行 httpd -l 时, prefork.c 未列出。

在这一点上,我不确定模块是否使用 apache 加载/编译,如果是 - 如何配置它。感谢任何帮助!

4

1 回答 1

3

您可以检查正在运行的 MPM:

httpd -M | grep mpm

你会看到类似的东西:

mpm_prefork_module (shared)

所有 MPM(prefork、worker、event)都是从您提到的文件中配置的:

/etc/httpd/conf.modules.d/00-mpm.conf

我相当确定 AWS 只是使用默认值,所以除了加载模块之外什么都没有。您可以继续添加您的设置。例如

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

StartServers           5
ServerLimit            256
MaxRequestWorkers      256
MaxConnectionsPerChild 0

您可以查看https://httpd.apache.org/docs/2.4/mod/mpm_common.html了解更多选项。

我也遇到过内存问题,并考虑配置 MPM 来解决问题,但它只是减少了问题,并没有完全解决问题。

我最终使用以下内容来设置环境变量:

export USE_ZEND_ALLOC=0

从那以后我没有记忆问题。

于 2018-04-04T04:20:49.193 回答