springcloud单个服务内存使用详情

时间:2021-12-17 14:21:28

查看单个进程的服务占用率

[root@insure dev]# ps -aux|grep claimoauth
root 0.1 4.5 1481780 ? Sl Dec27 : java -jar /opt/dev/claimoauth/claimoauthdev.jar --spring.profiles.active=application.properties
root 0.0 0.0 pts/ S+ : : grep --color=auto claimoauth
root 0.0 4.6 ? Sl Dec20 : java -jar claimoauthprod.jar

标红的部分单位是K  可以看到单个服务的内存占用达到了1.4G

查看服务器剩余内存

[root@insure dev]# free -m
total used free shared buff/cache available
Mem:
Swap:

设置单个微服务的内存大小之前先了解一些基础知识

1、栈内存存储基本类型的变量对象的引用变量。
  2、堆内存用于存放由new创建的对象和数组。每new一个对象就在堆内存中开辟一个新的存储空间存储此实例对象。
  3、Person p = new Person();
    执行new命令时程序执行两步:a:在堆内存中开辟一段空间,存储new出来的对象;b:在栈内存中添加一个变量p,p中存放的是该对象在堆内存中开始存放处的物理地址。
  4、p = null;
    执行此步骤的时候程序只是更改栈内存中的P变量所保存的地址,把地址指向null,而并没有操作堆内存(把p所指向的对象实例清空回收)。
  5、无论是形参或者实参,执行 XXX = null;操作时都是把XXX变量栈中存储的地址改为指向null的地址。不操作堆中的数据。

设置JVM内存的参数有四个

-Xmx   Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

-Xms   Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

-Xmn   Java Heap Young区大小,不熟悉最好保留默认值;

-Xss   每个线程的Stack大小,不熟悉最好保留默认值;

了解了以上的概念之后,微服务启动设置内存大小就好理解了

java -Xms500M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=512M -jar api-config.jar

-Xms -Xmx这两个一个初始值一个最大值可以根据实际需要设置堆内存的大小 一般3G左右

-XX:PermSize -XX:MaxPermSize 是栈大小的初始值和最大值

注意一点:微服务集群是在不同服务器上面搭建不同的服务才算是集群,单台机器起多个不算。