标签频道
内存
该标签下的文章、提问与讨论帖。
一、现象或背景 我在一个 3 节点自建 K8s(1.28.9 + containerd 1.6.24,节点 16C64G,内核 5.15.0-91,cgroup v2)里把 etcd 拆到独立节点单独管,数据目录在本地 NVMe。业务侧 r
【背景】 在 Kubernetes 集群中,CPU 和内存是两个最常见的资源瓶颈。但很多团队在遇到性能问题时,往往无法准确判断到底是 CPU 资源不足,还是内存资源紧张,导致调优方向错误,反而加剧了问题。 【常见分歧】 - 有人认为 CPU
背景 K8s 1.28.9 / containerd 1.7 / cgroup v2 / 内核 5.15,10 节点(16C64G)在线集群。一个 Java 17(Temurin 17.0.12)/ Spring Boot 3 无状态网关,
«结论先行:Go 服务在 K8s 里「limit 设了 4Gi 却被 OOMKilled」,根因几乎都是三层预算没对齐——① Go GC 的触发条件是 heap size("runtime.MemStats.HeapAlloc" + spa
背景 我在一个 3 节点自建 K8s(1.28.9 + containerd 1.6.24,节点 16C64G,内核 5.15.0-91,cgroup v2)里把 etcd 拆到独立节点单独管,数据目录在本地 NVMe。业务侧 revisi
«结论先行:cgroup v2 的 "memory.high" 是一个「软限」(soft limit),它不杀进程,而是通过让内核在该水位下主动回收(reclaim)并施加「背压」(back-pressure,让进程在内存分配时主动 sle
背景 我维护一套 30+ 微服务的 K8s 1.28 生产集群(自建,cgroup v2,节点 16C64G)。最近做容量复盘时发现一个长期被"默认化"却从没被认真讨论过的选择:绝大多数服务的 container 都同时设了 request
«结论先行:"emptyDir.medium: Memory" 把卷的页计到「挂载它的那个容器」的 cgroup "memory.max" 里,而不是 Pod 或节点层面——你在应用里看 RSS 不涨、"kubectl top" 看 Pod
«结论先行:在双路(2 NUMA node)服务器上,「CPU 没打满、P99 却周期性抖动」的根因,常常不是软件里的锁,而是物理拓扑——线程被调度到了 A 路,却去访问分配在 B 路的内存,每访问一次都要走 UPI 跨节点总线。这次一个内
【背景】 我做性能优化 10 年,最近带团队复盘一个 Java 17 的订单服务:K8s 1.28.9 + cgroup v2,Pod 规格 8C16G,JVM 参数 -Xmx8g -Xms8g -XX:+UseG1GC,跑 4 副本,QP
背景\n我在一个 12 节点(16C64G,Kubernetes 1.28.9,containerd 1.7.13,cgroup v2)的生产集群跑一套 Java 17 / Spring Boot 3 的无状态订单服务。容器 request
«结论先行:cgroup v2 的 PSI(Pressure Stall Information)是 OOM 之前少数几个"看得见"的信号之一。"memory.max" 触发 OOM 是阶跃事件——前一刻 RSS 还在涨,后一刻进程就没了,
背景 我在一个 12 节点(16C64G,K8s 1.28.9,containerd 1.7.13,cgroup v2,内核 5.15.0-112,Calico 路由模式)的生产集群里混跑 Java 17 微服务(约 18 个 Pod,re
«结论先行:"docker run --memory" 限的是物理内存(RSS),而 "ulimit -v" / "RLIMIT_AS" 限的是虚拟地址空间(VA)——两者是两条完全独立的预算线。绝大多数「明明给了 8G 内存、进程却 "C
背景 我负责一个 Go 1.22 写的订单网关,部署在 K8s 1.28(containerd 1.7,节点 16C64G)。QPS 峰值 ~3k,单副本。最近一个月被 OOMKilled 3 次,每次都在流量高峰 1~2 小时内,重启后又
结论先行 "-Xmx" 只约束了 Java 堆,可 cgroup 的 "memory.limit" 约束的是整个进程 RSS——堆、Metaspace、线程栈、DirectByteBuffer、JIT 代码缓存、glibc arena,全都
背景 我在一个 1.28 的 K8s 集群(containerd 1.7,节点 16C64G,跑 Java 17 / Spring Boot 3 的无状态服务)里,团队之前按「limit = 2 × 堆」的土办法给 Pod 设内存:JVM
文
标题
摘要