查看单个进程的服务占用率
[root@insure dev]# ps -aux|grep claimoauth root 8608 0.1 4.5 13701856 1481780 ? Sl Dec27 2:12 java -jar /opt/dev/claimoauth/claimoauthdev.jar --spring.profiles.active=application.properties root 25502 0.0 0.0 112708 980 pts/7 S+ 13:53 0:00 grep --color=auto claimoauth root 27763 0.0 4.6 13698780 1527300 ? Sl Dec20 8:32 java -jar claimoauthprod.jar
标红的部分单位是K 可以看到单个服务的内存占用达到了1.4G
查看服务器剩余内存
[root@insure dev]# free -m total used free shared buff/cache available Mem: 32012 24056 4341 0 3615 7511 Swap: 0 0 0
设置单个微服务的内存大小之前先了解一些基础知识
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 是栈大小的初始值和最大值
注意一点:微服务集群是在不同服务器上面搭建不同的服务才算是集群,单台机器起多个不算。