Actual containers CPU and memory consumption
Актуальное потребление контейнером CPU можно посмотреть так:
kubectl exec -it podname -- cat /sys/fs/cgroup/cpu/cpuacct.usage
Актуальное потребление контейнером памяти можно посмотреть так:
kubectl exec -it podname -- cat /sys/fs/cgroup/memory/memory.usage_in_bytes kubectl exec -it podname -- cat /sys/fs/cgroup/memory.peak
Удалить все подики, которые не Running
k get po -A | grep -v Running | grep -v NAME | awk '{print " -n "$1 " " $2}' | while IFS= read -r line; do kubectl delete po $line ; done
JVM Memory Tuning in k8s
- Чтобы JVM корректно определяла объем памяти, заданный с помощью k8s mem limit добавляем в опции:
-XX:+UseContainerSupport
- Чтобы не возиться с Xmx, а позволить JVM самостоятельно определить сколько надо - добавляем:
-XX:InitialRAMPercentage=50.0 -XX:MaxRAMPercentage=70.0
Максимальная цифра 70 - установлена и подтверждена экспериментально. https://stackoverflow.com/a/54076834 и https://stackoverflow.com/questions/65114573/java-memory-settings-in-a-docker-container
- В итоге Xmx вычислится сам по формуле
MaxHeapSize = MaxRAM * MaxRAMPercentage / 100% (default MaxRAMPercentage=25)
- Важно учитывать, что если задана Xmx, то MaxRAMPercentage не используется.
Discussion