是否有任何正当理由来锁定一个进程的所有 mmaped 文件?

是否有任何正当理由来锁定一个进程的所有 mmaped 文件?

我正在管理一些 Linux 服务器,这些服务器运行着由我们的一个应用程序团队开发的基于 httpd 的应用程序。该应用程序位于 EC2 中,每个主机都有 32GB 的 RAM。我注意到,这些主机中大约每天都会发生一次 OOM 事件,最终 httpd 会被终止。我还注意到 httpd 已锁定了 23GB 的内存,全部位于文件缓存中。我的问题是,在什么情况下,进程锁定所有映射文件是一个好主意。我想不出为什么这是个好主意。我假设开发人员这样做是为了确保他们主动写入的文件保留在内存中,但 Linux 本身不应该驱逐这些文件,除非到了最后关头。通过锁定所有内容,httpd 最终成为第一个被 oom-killer 终止的。我向开发人员提出了这个问题,他们的回答是“没关系,它会自动重新启动。” ....但是如果 httpd 不断被杀死(从而驱逐所有内容并导致系统可能必须返回其某些文件),这首先不是违背了 mlock 的目的吗?

相关内容