## 背景

go编写的应用程序(juicefs)在k8s(docker)中运行,时不时出现 OOM Killed。

## 分析

发现某些应用使用juicefs会导致内存使用飙升;

k8s的pod给的内存资源:request 2G,limit 5G;

到内存使用到达5G的时候,就会出现OOM;

## 解决

使用 go 1.19 重新编译(juicefs),并且在进程启动的pod中设置环境变量 GOMEMLIMIT

GOMEMLIMIT=2048MiB

将内存限制在2G,解决OOM Kill的问题;

## 参考

go1.19 内存优化的具体技术细节参考如下:

Go 1.19中值得关注的几个变化: Go 1.19中值得关注的几个变化 | Tony Bai

## TODO

排查内存占用过高的原因

## 注

对于juicefs而言(静态pv挂载方式),则是修改secret

kxyb -n juicefs-system create secret generic juicefs-secret-zmc-test \
      --from-literal=name="zmc-test" \
      --from-literal=metaurl="tikv://node1.juicefs-tikv.sys.xxx.com:2379,node2.juicefs-tikv.sys.xxx.com:2379/zmc-test" \
      --from-literal=storage="OSS" \
      --from-literal=bucket="http://juicefs.shanghai.oss.aliyun.xxxx.com" \
      --from-literal=access-key="xxxxx" \
      --from-literal=secret-key="xxxxx" \
      --from-literal=appid="100012345" \
      --from-literal=token="xxxx" \
      --from-literal=envs="{GOMEMLIMIT: 2048MiB}"

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐