内存知识网 手机版
首页 > 内存知识 >

线上环境内存使用率80%怎么办

时间:


内存不足——计算机运行状态,无法分配额外的内存供程序使用,黑板上的首字母缩写文字

以前不设置还不知道, 这不要被烦死啊。 运维的活不好干啊。

就很奇怪,为什么启动就占了这么多内存, 所以就为了下AI

1、如何查看当前centOS系统中内存使用情况,有哪些应用正在消耗内存

AI回复:

使用以下命令查看当前CentOS系统中内存使用情况

top命令:在终端中输入top命令,可以实时监控系统资源的使用情况,包括CPU、内存、进程等。

ps命令:在终端中输入ps命令,可以查看当前运行的进程列表,包括PID、占用内存、CPU使用率等信息。

htop命令:在终端中输入htop命令,可以以图形化界面的方式查看系统资源的使用情况,包括CPU、内存、进程等。

free命令:在终端中输入free命令,可以查看系统中内存的使用情况,包括已用内存、空闲内存、缓存等。


2、springboot 应用启动会,为什么会占用较多内存

AI回复:

Spring Boot 的默认配置可能会导致内存使用过高。例如,如果 JVM 堆内存的大小设置得太大,则会占用大量的系统内存。

如果应用程序设计不合理,也会导致内存占用过高。例如,如果应用程序中有太多的对象创建和销毁,或者有太多的线程在等待 I/O 操作完成,都会导致内存使用过高。

如果应用程序中使用了过多的缓存,也会导致内存使用过高。例如,如果应用程序中使用了 Redis 等缓存机制,并且缓存中的数据量很大,就会导致内存使用过高。


3、如何设置JVM堆内存的大小

AI回复:

设置Spring Boot应用程序的JVM堆内存大小:

在启动命令中添加参数,例如:java -Xms512m -Xmx1024m
your.package.NameApplication。其中,-Xms表示最小堆内存大小,-Xmx表示最大堆内存大小。在这个例子中,最小堆内存大小为512MB,最大堆内存大小为1024MB。

在application.properties文件中添加以下配置:
spring.main.allow-bean-definition-overriding=true,然后在src/main/resources目录下创建一个名为application.yml的文件,并在其中添加以下配置:

server:

port: 8080

jvm:

-Xms512m

-Xmx1024m。

在这个例子中,最小堆内存大小为512MB,最大堆内存大小为1024MB。


4、那如果只在启动命令中设置-Xms512m -Xmx1024m,application.yml文件中不做设置,是否正常

AI回复:

是的,如果您只在启动命令中设置了-Xms512m -Xmx1024m,而没有在application.yml文件中做任何设置,那么Spring Boot应用程序应该可以正常运行。但是,如果您的应用程序需要处理大量的数据或者有大量的对象创建和销毁,那么可能需要增加JVM堆内存的大小以避免内存不足的问题。


5、如何查看正在运行中的springboot的堆内存大小

AI回复:

使用curl命令:curl
http://localhost:19999/memory-status。这个命令会返回一个JSON对象,其中包含了当前应用程序的堆内存大小、最大堆内存大小和空闲堆内存大小等信息。

使用jps命令:jps -l | grep springboot。这个命令会列出所有与Spring Boot相关的进程,并显示它们的PID和名称。然后,您可以使用top命令来查看每个进程的CPU和内存使用情况,例如:top -p <PID>。在这个例子中,<PID>是您在第一步中找到的进程ID。


至此,大概了解, 启动时,肯定是运维人员设置了堆内存大小导致, 所以登录服务器查看启动命令, 果然是这个问题, 内存原本就4G, 而且被设置了初始大小2G内存, 所以启动后就会占用一大半, 因为系统运行也要消耗一些。

解决办法就是在springboot启动命令加上 -Xms1024m -Xmx2024m,设置堆内存大小需要根据你的系统内存来定, 可能是统一的启动命令, 所以也没有修改, 导致项目启动就占用80%内存。

重启后,内存占用降到30%左右, 完工。