运维-云服务-运行卡顿-开启swap交换分区-虚拟内存
原文《阿里云,腾讯云搭建 gitlab 服务器卡顿问题解决方法》
https://blog.csdn.net/qq_30745307/article/details/82829064
一、原因分析
最近索性自己用阿里云服务器搭建了一个 gitlab 服务器以供自己开发使用,服务器搭建很简单,但是使用起来是相当的卡顿,在代码 pull,push 过程中都会有相应的延迟,很糟心。起初我以为是我的阿里云服务器配置过低造成的(1核,2G,centos7),后来发现不是这样。
gitlab 启动运行就占用了大量的内存,2G内存在启动后已经所剩无几。想再进行 git 相关操作自然也就会出现卡顿现象。
正常 centos 应该是启用 swap 分区的,但是阿里云,腾讯云的服务器却没有swap分区!
通过以下命令查看swap分区情况:
cat /proc/swaps
结果如下图所示,可以看到并没有swap分区:
二、解决方法
1、创建 swap 分区(这里需要等待几秒)
dd: failed to open ‘/data/swap’: No such file or directory
没有文件先创建
[root@ecs-151687 /]# touch failed to open ‘/data/swap’: No such file or directory^C
[root@ecs-151687 /]# mkdir /data
[root@ecs-151687 /]# touch /data/swap
dd if=/dev/zero of=/data/swap bs=512 count=8388616
注意:创建swap大小为bs*count=4294971392(4G),/data/swap目录若无则找/mnt/swap
2、通过mkswap命令将上面新建出的文件做成swap分区
mkswap /data/swap
3、查看内核参数vm.swappiness中的数值是否为0,如果为0则根据实际需要调整成60
查看参数:
cat /proc/sys/vm/swappiness
设置参数:
sysctl -w vm.swappiness=60
4、启用 swap 分区
swapon /data/swap
echo “/data/swap swap swap defaults 0 0” >> /etc/fstab
5、再次使用cat /proc/swaps 查看swap分区是否启动
可以看到,swap分区已经启用,现在通过 gitlab 进行操作会发现很流畅!
2020年6月15日 将4G swap 交换分区提升到 13G(实际12G)
加粗的是指令
1、
df -h 硬盘
free -h (内存 含有交换分区)
2、
增加swap 分区要先停止现有分区
swapoff /data/swap
提示 swapoff 失败: 无法分配内存
如果提示 swapoff: /data/swap: swapoff failed: Invalid argument
使用 swapoff -a
3、
top 查看占用java内存大的应用
ps -ef | grep elastic
kill -9 xxxx
free -h (直到mem内存剩余大小够用)
4、
关闭相关应用后释放
释放内存缓存:
sync ; echo 3 > /proc/sys/vm/drop_caches #先把内存数据回写到磁盘,然后释放内存缓存
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free reclaimable slab objects (includes dentries and inodes):
echo 2 > /proc/sys/vm/drop_caches
To free slab objects and pagecache:
echo 3 > /proc/sys/vm/drop_caches
如果要disable,输入参数4,注意0不被接受:
上述方法可能不会成功,当你的swap分区使用太多的时候。
参考:https://www.cnblogs.com/yjt1993/p/11163679.html
5、重新释放
swapoff /data/swap (通过free -h 观察进度,swap 分区 转到 mem内存,可以保证其他java服务不挂)
6、
dd if=/dev/zero of=/data/swap bs=100M count=130 (即 100M ×130 = 13G(实际12G),100M ×150 = 15G, 100M ×50 = 5G,of指路径)
记录了130+0 的读入
记录了130+0 的写出
13631488000字节(14 GB)已复制,130.151 秒,105 MB/秒
7、设置分区格式
mkswap /data/swap
8、【略】设置 vm.swappiness 到 60,这里略,(已设置过)
9、启用swap
swapon /data/swap (提示 :不安全的权限 0644,建议使用 0600。 没关系)
echo "/data/swap swap swap defaults 0 0" >> /etc/fstab
10、查看是否启用
cat /proc/swaps
free -h
[root@VM_0_2_centos elastic-search]# free -h
total used free shared buff/cache available
Mem: 1.8G 1.3G 114M 828K 423M 342M
Swap: 9.8G 0B 9.8G