例如,apache httpd 提供了一个指令 MaxConnectionsPerChild,它控制服务器通过杀死旧进程并启动新进程来回收进程的频率。
服务一定数量的连接后完全杀死旧线程的原因是什么。
这不会使 CPU 缓存不必要地变冷吗?
例如,apache httpd 提供了一个指令 MaxConnectionsPerChild,它控制服务器通过杀死旧进程并启动新进程来回收进程的频率。
服务一定数量的连接后完全杀死旧线程的原因是什么。
这不会使 CPU 缓存不必要地变冷吗?
从文档:
将 MaxConnectionsPerChild 设置为非零值会限制进程可能因(意外)内存泄漏而消耗的内存量。
因此,如果每个请求泄漏 1 MB(malloc()
但不是free()
),您将逐渐耗尽越来越多的内存,直到用完并且 apache 被杀死。但是如果你设置MaxConnectionsPerChild 100
,孩子将逐渐使用最多 100 MB 的内存,然后被杀死并回到 0。
“热缓存”的东西在这里适用,设置 MaxConnectionsPerChild 会减慢 apache。这就是为什么默认是无限的。MaxConnectionsPerChild 意味着内存泄漏的不雅管道胶带。时间紧迫的程序员可能更愿意花 1 分钟设置 MaxConnectionsPerChild,而不是花 1 周时间寻找 malloc() 调用。