监控被 oomkiller (kubernetes) 终止的 apache 工作进程

监控被 oomkiller (kubernetes) 终止的 apache 工作进程

我有一个基于的docker容器php:7.2-apache-stretch在 kubernetes/rancher 中运行。当前的 k8s 内存限制过低,因此当工作进程被 oomkill 时,用户会收到错误和截断的页面。由于 httpd 父进程没有被终止,我的容器不会死机或重新启动,我会看到日志。当这些进程被终止时,我很惊讶在容器的 stdout/stderr 中看不到任何日志。

在将内存限制提高到更合理的值之前,我希望了解如何围绕这种情况构建日志记录/警报。

是否有针对这些内存事件进行监控/警报的标准/最佳实践?

我考虑过但还无法弄清楚的潜在选择:

  1. 配置 k8s/rancher 以在某处记录 oom-killer 事件(或了解它们在哪里)
  2. 配置 Apache 父进程,当某个工作进程被 oomkiller 杀死时,该进程就会终止
  3. 配置 Apache 当工作进程被终止时记录到 stderr。
  4. 配置 Apache 以使用单个进程运行?也许默认的 apache mpm 配置不适合容器化。
  5. 切换到不同的网络服务器?
  6. 还有其他想法吗?

相关内容