在使用轻量应用服务器实例过程中,可能会遇到实例CPU使用率或CPU负载持续较高的情况。
轻量应用服务器内存通常也比较小,容易跑满内存。我们可以把一部分硬盘空间虚拟成内存使用,
将系统内非活动内存换页到SWAP,以提高系统可用内存。
让我们来做如下设置,优化小内存应用。
一、开启并设置SWAP。
SWAP合理的大小是与 VPS 的物理内存有关的,通常
内存 <= 4g:Swap 至少 4G
内存 4~16G:Swap 至少 8G
内存 16G~64G:Swap 至少 16G
内存 64G~256G:Swap 至少 32G
1.查看当前分区情况:
free -m

2.先把当前所有分区都关闭了:
swapoff -a
3.创建要作为 Swap 分区文件(其中 /var/swapfile 是文件位置,bs*count 是文件大下,例如以下命令就会创建一个 4G 的文件):
dd if=/dev/zero of=/var/swapfile bs=1M count=4096
4.建立 Swap 的文件系统(格式化为 Swap 分区文件):
mkswap /var/swapfile
5.启用 Swap 分区:
swapon /var/swapfile
6.再次查看当前分区:
free -m
如果有 Swap 就说明创建成功了:

7.最后设置开机启动,在 /etc/fstab 文件中加入一行代码:
/var/swapfile swap swap defaults 0 0
其中/var/swapfile 路径可以修改,根据创建的SWAP分区文件具体路径来配置。
到此,SWAP设置完毕。
在开启SWAP后,系统此时在持续进行换页操作,可能会导致占用大量CPU资源。
kswapd0是虚拟内存管理中负责换页的进程,当轻量应用服务器物理内存不足时,kswapd0会执行换页操作,换页操作会消耗大量的CPU资源。为此,我们需要修改vm.swappiness内核参数来控制交换空间的大小,来解决kswapd0进程占用CPU较高的问题。
二、修改vm.swappiness参数。
参数含义
-
swappiness=0:尽量避免使用交换分区,最大限度地使用物理内存。只有在内存非常紧张的情况下才会使用交换分区1。
-
swappiness=100:积极使用交换分区,将内存中的数据尽快搬运到交换分区1。
1.查看swappiness参数。
cat /proc/sys/vm/swappiness
2.根据需要,调整swappiness参数。
a.打开内核参数配置文件sysctl.conf。
vi /etc/sysctl.conf
b.修改swappiness参数值。如在sysctl.conf文件中,修改vm.swappiness = 60。
c.输入:wq保存修改。
d.重新加载sysctl配置文件,使配置生效。
sysctl -p
三、优化内存未耗尽时触发 Out Of Memory。
vm.min_free_kbytes 是 Linux 内核中的一个可调参数,它指定了内核应保留的最小空闲内存量(以千字节为单位)。这个参数的目的是确保在内存需求高峰时,系统有足够的空闲内存来处理紧急情况,从而避免因内存不足而导致的系统死锁或其他问题。
1.查看 min_free_kbytes 值。
sysctl -a | grep min_free
min_free_kbytes 值单位为 kbytes,如 min_free_kbytes = 102400 即为100MB。
2.打开 /etc/sysctl.conf 配置文件。
vim /etc/sysctl.conf
修改 vm.min_free_kbytes 配置项。若该配置项不存在,则直接在配置文件中增加即可。
建议修改 vm.min_free_kbytes 值为不超过总内存的1%即可。
3.输入:wq保存修改。
4.重新加载sysctl配置文件,使配置生效。
sysctl -p
401




被折叠的 条评论
为什么被折叠?



