我有一个基于的docker容器php:7.2-apache-stretch在 kubernetes/rancher 中运行。当前的 k8s 内存限制过低,因此当工作进程被 oomkill 时,用户会收到错误和截断的页面。由于 httpd 父进程没有被终止,我的容器不会死机或重新启动,我会看到日志。当这些进程被终止时,我很惊讶在容器的 stdout/stderr 中看不到任何日志。
在将内存限制提高到更合理的值之前,我希望了解如何围绕这种情况构建日志记录/警报。
是否有针对这些内存事件进行监控/警报的标准/最佳实践?
我考虑过但还无法弄清楚的潜在选择:
- 配置 k8s/rancher 以在某处记录 oom-killer 事件(或了解它们在哪里)
- 配置 Apache 父进程,当某个工作进程被 oomkiller 杀死时,该进程就会终止
- 配置 Apache 当工作进程被终止时记录到 stderr。
- 配置 Apache 以使用单个进程运行?也许默认的 apache mpm 配置不适合容器化。
- 切换到不同的网络服务器?
- 还有其他想法吗?