当前位置:   article > 正文

Java/Spring应用在K8s中的内存配置

Java/Spring应用在K8s中的内存配置

1.Metrics-server

Github地址:https://github.com/kubernetes-incubator/metrics-server
Metrics-server是K8S中一个监控度量组件,用于替代heapster组件
在这里插入图片描述
Metrics Servrer 原理介绍https://blog.csdn.net/u012516914/article/details/106450116
在这里插入图片描述

Metrics-server通过cAdvisor及kubelet组件定期抓取Pod和Node上边资源使用情况,并且通过Metrics API暴露,然后我们可以通过Kubectl来访问这些Metrics,另外K8S支持的HPA(pod弹性伸缩)也依赖于Metrics API,除了内置的metrics-server,业界用的是主流的监控方案是Prometheus

2.kubectl top

在这里插入图片描述

3.查看Dashboard令牌

在这里插入图片描述

4.查看节点资源使用

在这里插入图片描述

5.查看Pod资源使用

在这里插入图片描述

6.JVM内存结构

一个JVM应用启动之后会使用到3个内存,分别为Heap Memory(堆),Non-Heap Memory(非堆),Other
首先JVM会计算出最大和最小的堆,其中最大的堆为Max allowed,这个是JVM应用直接可以向OS申请的,它首先会从初始堆开始申请,如果堆不够用,JVM会向OS申请额外内存,下图蓝框是已经分出来的
详细介绍JVM内存结构:https://blog.csdn.net/rongtaoup/article/details/89142396
在这里插入图片描述

7.JVM内存监控代码

在这里插入图片描述

8.查看CustomerService Pod监控日志

在这里插入图片描述

==== System Info ====
Java version: IcedTea 1.8.0_212
Operating system: Linux 3.10.0-1127.el7.x86_64
CPU Cores: 1
Physical Memory: 3,931 MB		#物理内存
==== JVM Memory Info ====
Max allowed memory: 792 MB		#最大允许堆使用量
Allocated memory:72 MB			#当前已分配(蓝框信息)
Used memory in allocated: 53 MB
Free memory in allocated: 19 MB
Total free memory: 739 MB		#绿框+剩余未使用的
Heap Memory Usage: init = 16777216(16384K) used = 56109040(54793K) committed = 76472320(74680K) max = 831193088(811712K)
Non-Heap Memory Usage: init = 2555904(2496K) used = 86398056(84373K) committed = 90308608(88192K) max = -1(-1K)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

9.查看容器JVM参数

https://stackoverflow.com/questions/54292282/clarification-of-meaning-new-jvm-memory-parameters-initialrampercentage-and-minr

[root@k8s7-21.host.com ~]# kubectl exec -it customers-5b455db5b-bbch2 sh
/ # java -XX:+PrintFlagsFinal -version | grep -E "UseContainerSupport | InitialRAMPercentage | MaxRAMPercentage | MinRAMPercentage"
   double InitialRAMPercentage                      = 1.562500                            {product}
   double MaxRAMPercentage                          = 25.000000                           {product}
   double MinRAMPercentage                          = 50.000000                           {product}
     bool UseContainerSupport                       = true                                {product}
openjdk version "1.8.0_212"		#新的JDK版本是支持容器的,可以辨别容器的Limit限制
OpenJDK Runtime Environment (IcedTea 3.12.0) (Alpine 8.212.04-r0)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
/ # 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

10.Petclinic微服务Dockerfile更新

在这里插入图片描述

11.更新customers-dp.yml

在这里插入图片描述

12.更新发布Petclinic微服务

kubelet apply -f .

13.查看CustomerService Pod监控日志

14.总结

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/616089
推荐阅读
相关标签
  

闽ICP备14008679号