k8s 中的 nodejs Web 应用程序出现 OOM

问题描述

我正在 kubernetes 上运行一个使用 fastify 实现的 nestjs 网络应用程序。

我将我的应用程序拆分为 Multi Zones,并将其部署到不同物理位置的 k8s 集群(集群 A集群 B)。

一切都很顺利,除了 Culster A 中的 Zone X,它在所有区域中都拥有最大流量(这里是 Zone X 在正常时间的 2 天指标仪表板)

2-Day Metrics During Normal Time


该问题仅发生在集群 A 中的 区域 X,而不会发生在任何其他区域或集群上。

起初集群A的Ingress Dashboard中出现了大约499个响应,很快Pod的内存突然一个一个地扩展到内存限制。

Metrcis During Abnormal Time

似乎 499 状态是由 Pod 未向外部发送响应引起的。

同时,集群A中的其他区域正常工作。

为了避免影响用户,我将所有网络流量切换到集群B,一切正常,排除脏数据引起的。

我试图杀死并重新部署 集群 AZone X 的所有 Pod,但是当我将流量切换回集群 A 时,问题再次出现。但是等了2-3个小时后又恢复了交通,问题就消失了!

由于不知道怎么回事,我唯一能做的就是切换流量并检查一切是否恢复正常。

我已经尝试了节点内存问题的多种变体,但似乎没有一个会导致此问题。对这个问题有什么想法或灵感吗?


姓名 版本
nestjs v6.1.1
fastify v2.11.0
Docker 镜像 node:12-alpine(v12.18.3)
入口 v0.30.0
Kubernetes v1.18.12

kernal dmesg log

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...