20190724 JVM参数启动内存小,响应时间长

jvm启动内存参数小,导致响应时间长

现象:工作站有一会偶尔加载很慢,通过抓包显示接口响应时间为3秒。

原因:Doctor微服务有一台机器,启动内存参数太小,导致响应时间比较长;现在已经对虚拟机参数进行了优化,服务重启,响应正常。

启动参数小:导致第一次压测时tps比较低,并且也受到缓存的影响。

通过调节启动内存的大小,解决接口响应慢的问题

 

内存大小对性能的影响(机器处理任务的速度

内存大小决定了机器的速度,严重时内存小还能造成死机。简单的说,比如你用水桶打水往水缸里倒,内存就相当于你的水桶。水桶越大,每次打的水就越多,你越能快速把水缸罐满。内存越大,电脑在单位时间内可同时存储的文件就越多,可以加快处理的进程。

由于CPU只能直接处理内存中的数据,所以内存的速度和大小对计算机性能的影响是相当大的。

内存的大小决定了电脑反应的速度。其实在实际使用中,很多软件对内存容量的依赖非常大,尤其是多种程序同时运行,内存容量不够是不行的,所以目前内存容是越大越好。

 

如何查看虚拟机参数?

把虚拟机参数配置到配置文件中,然后虚拟机启动的时候就会加载配置文件,配置就能够生效

微服务启动的时候,设置虚拟机参数

常用命令:

jps

jinfo 25548

jinfo -flags 25548

 

如何查看可用内存?

top命令,KiB Mem : 3882204 total 1g=1024m 1m=1024kb

3882204/1024/4 初始内存的大小。最大内存和初始内存都设置为1024m左右。

 

虚拟机参数设置标准

设置多大才算合理,标准是什么?

堆分配参数总结:

-Xms:表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可

-Xmx:表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。但是开发过程中,通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。

一般来讲对于堆区的内存分配只需要对上述两个参数进行合理配置即可。

 

XX:NewSize : 设置新生代的大小

XX:NewRatio:设置老年代与新生代的比例,即老年代除以新生代大小

XX:SurviorRatio:新生代中eden区与survivior 区的比例

-XX:PermSize:设置永久区的大小

-XX:TargetSurvivorRatio:设置survivior 的使用率。当达到这个空间使用率时,会将对象送入老年代。

 

方法区参数配置

-XX:PermSize:表示非堆区初始内存分配大小,其缩写为permanent size(持久化内存)

-XX:MaxPermSize:表示对非堆区分配的内存的最大上限

 

例子:-Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

上面设置的参数就是堆初始化128M,最大堆内存是512M;方法区初始化分配内存128M,方法区最大上限是512M。

 

 

你可能感兴趣的:(服务器端)