kubectl top pod
kubectl describe pod 名称 | grep -A3 Limits
resources:
limits: {memory: 2Gi}
requests: {memory: 1Gi}
压测时 Pod 被反复杀掉重启,事件里显示因内存超限被终止。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,容器内存上限低于应用实际峰值,超过后内核直接终止进程,Java 这类运行时还要单独限制堆大小。
「K8s OOMKilled」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
处理上按这个顺序:观察实际内存曲线与峰值;按峰值上浮设置 limits;同时给 JVM 或运行时设置对应上限。
改完只确认一件事:压测过程中不再出现 OOMKilled,内存使用稳定在上限以内。