[英]How to enlarge memory limit for an existing pod
在 openshift 中,如何将现有 pod 的 memory 使用量从 2GB 扩大到 16GB? 目前我总是用完 memory。
您可以将 OOM 限制更改为“1”。 进程,并通过“2”降低OOM优先级。 过程。
apiVersion: v1
kind: Pod
metadata:
name: frontend
spec:
containers:
- name: db
image: mysql
resources:
requests:
memory: "2Gi"
limits:
memory: "16Gi" <--- If this memory usage is reached by your application, triggered the Out of Memory event.
:
// If limits and optionally requests are set (not equal to 0) for all resources and they are equal,
// then the container is classified as Guaranteed.
apiVersion: v1
kind: Pod
metadata:
name: frontend
spec:
containers:
- name: db
image: mysql
resources:
requests:
memory: "2Gi" <--- set the same size for memory
limits:
memory: "2Gi" <--- in requests and limits sections
:
将此部分添加到您的 deploymentConfig 文件中。
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: Never
resources:
limits:
memory: "16Gi"
requests:
memory: "2Gi"
如果问题仍然存在,我建议寻找 HPA(Horizontal pod autoscaler),它将根据 cpu 和 memory 利用率增加 pod,以便您的应用程序 pod 永远不会被杀死。 查看此链接了解更多信息
https://docs.openshift.com/container-platform/3.11/dev_guide/pod_autoscaling.html
最 OOM Killed 问题发生在 Java 应用程序中,因此,设置 env 可以限制应用程序 memory 的使用(这通常是由堆引起的 memory 可以在您的部署中限制那些规范的使用)。
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: Never
resources:
limits:
memory: "16Gi"
requests:
memory: "2Gi"
env:
- name: JVM_OPTS
value: "-Xms2048M -Xmx4048M"
或者你可以使用这个
env:
- name: JVM_OPTS
value: "-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1
通过使用这些 env 变量中的任何一个,您的应用程序将遵守在 pod 级别/容器级别设置的 memory 限制(意味着它不会 go 超出其限制,并且会在达到 ZCD69B4957F06CD818D7BF34D1F91FB2E514B8576FAB1A75A89A6BZ 限制后立即进行垃圾清理)
我希望这能解决你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.