8

我正在尝试减少服务器上 Apache 的内存使用量。

我每个孩子的实际最大连接数是 10k

根据以下建议

每个孩子的最大连接数应减少到 1000

http://www.lophost.com/tutorials/how-to-reduce-high-memory-usage-by-apache-httpd-on-a-cpanel-server/

Apache 配置中每个孩子的最大连接数的建议最大值是多少?

4

2 回答 2

12

该指令影响任何事情的唯一时间是当您的 Apache 工作人员泄漏内存时。发生这种情况的一种方法是分配内存(通过malloc()或其他方式)并且从未释放。这是 Apache 或其模块中的设计/实现缺陷的结果。

这个指令实际上有点像黑客攻击——但是如果加载到 Apache 中的某个模块会泄漏,例如每个请求 8 个字节,那么在大量请求之后,您将耗尽内存。所以快速解决方法是杀死每个 MaxConnectionsPerChild 请求的进程并启动一个新进程。

如果您在将 MaxConnectionsPerChild 设置为零时看到它在大量请求的范围内逐渐增加,这只会影响您的内存使用量。

于 2014-05-27T14:32:34.373 回答
1

默认值为 0(这意味着每个孩子没有最大连接数),因此除非您有内存泄漏,否则我不知道有任何需要更改此设置 - 我同意 Hut8。

Apache 2.4 性能调整页面在这里分享仅供参考:

与进程创建相关的是由 MaxConnectionsPerChild 设置引起的进程死亡。默认为 0,这意味着每个子节点处理的连接数没有限制。如果您的配置当前将此设置为某个非常低的数字,例如 30,您可能希望显着提高此值。如果您正在运行 SunOS 或旧版本的 Solaris,请将其限制为 10000 左右,因为内存泄漏。

并且来自MaxConnectionsPerChild 上的 Apache 2.4 文档

将 MaxConnectionsPerChild 设置为非零值会限制进程可能因(意外)内存泄漏而消耗的内存量。

于 2019-03-07T19:52:30.883 回答