暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓 解决了金仓数据库KingbaseES 使用KDTS时出现内存不足的问题

数据猿 2023-09-14
1111

关键字

KDTS,JAVA虚拟机内存,Swap空间

问题描述

使用linux开启KDTS WEB端启动失败,查看日志错误原因为内存不足,具体报错信息如下:

问题分析

根据报错信息可以得出,启动JDK服务时需要2G内存,但是系统可用内存不足,问题可能出现的原因有两个:

1.配置KDTS启动脚本 startup.sh时,设置JAVA虚拟机内存 JAVA_MEMORY字段 数值过大
进入启动KDTS-WEB下的bin目录中,vi startup.sh 通过JAVA_MEMORY字段查看所分配内存的大小。如果安装kingbase ES后没有KDTS的启动脚本进行修改,那么脚本会自动根据计算机的可用内存自动计算分配给迁移程序JAVA虚拟机内存(可用内存的2/3),如果条件允许,可以去掉JAVA_MEMORY前的注释,手动设置分配的内存,如图所示。

image.png

虽然是根据可用内存的2/3进行内存分配,但依旧可能出现内存过小而导致服务无法启动的问题。

2.当前linux系统可用的内存过小
使用free –h 查看当前系统内存情况

image.png

如图所示,当前系统可用内存为738M,Swap空间为39M,可用空间过小,导致无法启动KDTS服务。

解决方案

1.如果是给JAVA虚拟机分配空间过大,可以通过JAVA_MEMORY字段后面的数值大小来解决,一般来说1G即可。

2.如果是linux系统可用内存过小,可以从以下两个角度来解决问题。

一:最靠谱的办法是想办法停止其他不需要运行的进程,释放已用的内存空间,或换个内存空间足够的虚拟机启动该服务。

二:如果无法停止已经启动了的进程,且没条件更换虚拟机,则可以通过增加Swap分区来解决内存不足的问题。
Swap分区的中文名是交换分区,类似于Windows中的虚拟内存,就是当内存不足的时候,可以把一部分硬盘空间当成虚拟内存使用。因此,Swap分区的作用就是牺牲硬盘,增加内存。如果是萌新,在使用此方法之前,问一下你的mde可不可以进行当前操作!!

上正菜:

在你的目录下创建一个swap文件夹,作为存放swapfile的位置

#mkdir swap

创建swapfile:进入你的swap文件夹,执行

#dd if=/dev/zero of=swapfile bs=1024 count=500000

上面这段语句的意思是,创建一个大小为500M的文件,有时会遇到dd命令不识别,是因为过去安装过一次,要把旧的swapfile删除。像/dev/null一样,/dev/zero也是一个伪文件,但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的),/dev/zero的主要作用是用来创建一个指定长度的初始化的空文件,就像临时交换文件。Of是空间名称,count是大小,bs是单位,这里是kb,你可以将bs=1024改成1G,后面的count设置为2,就是创建2G大小的swap空间。

将swapfile设置为swap空间

#makeswap swapfile

启用交换空间

#swapon swapfile

如果当前用户非root用户,则会启用失败

使用root权限执行指令即可

#Sudo swapon swapfile

设置文件权限到600防止常规用户读写这个文件
#sudo chmod 600 /swapfile
此时再使用free –h指令 即可查看当前swap空间已经扩充完毕

再次进入KDTS服务的bin目录下即可启动服务。
如果不需要使用当前交换空间 使用

#sudo swapoff file 删除交换空间

#rm swapfile 删除文件

注:如果没有执行swapoff操作,就执行删除文件的操作,系统会报错,不给删除。Swapoff相当于卸载swap分区。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论