1

例如,apache httpd 提供了一个指令 MaxConnectionsPerChild,它控制服务器通过杀死旧进程并启动新进程来回收进程的频率。

服务一定数量的连接后完全杀死旧线程的原因是什么。

这不会使 CPU 缓存不必要地变冷吗?

4

1 回答 1

1

文档

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

因此,如果每个请求泄漏 1 MB(malloc()但不是free()),您将逐渐耗尽越来越多的内存,直到用完并且 apache 被杀死。但是如果你设置MaxConnectionsPerChild 100,孩子将逐渐使用最多 100 MB 的内存,然后被杀死并回到 0。

“热缓存”的东西在这里适用,设置 MaxConnectionsPerChild 会减慢 apache。这就是为什么默认是无限的。MaxConnectionsPerChild 意味着内存泄漏的不雅管道胶带。时间紧迫的程序员可能更愿意花 1 分钟设置 MaxConnectionsPerChild,而不是花 1 周时间寻找 malloc() 调用。

于 2016-01-05T23:10:55.947 回答