zabbix5.0 High swap space usage ( less than 50% free)解决步骤。相关小知识:linux系统mem和swap的关系

zabbix5.0 系统报错High swap space usage ( less than 50% free)

一,执行free -m,看看目前内存是多少

                      total        used        free      shared  buff/cache   available
Mem:           7795        1947         119         110        5728        5386
Swap:          2047        1022        1025
可以看到swap已经使用超过50%。

二,创建/home/swap 一个文件

 执行命令 : dd  if=/dev/zero  of=/home/swap  bs=1024  count=5120000

返回结果:

5120000+0 records in
5120000+0 records out
5242880000 bytes (5.2 GB) copied, 30.531 s, 172 MB/s    #生成了一个5.2GB的文件

三,将这个文件变成swap分区

执行命令:  /sbin/mkswap    /home/swap

返回结果:Setting up swapspace version 1, size = 5119996 KiB
                  no label, UUID=a85b3bd3-8c5f-4192-b43e-2ae0df2fe09e

四,使这个分区变成有效状态

执行命令:  /sbin/swapon    /home/swap
返回结果: swapon: /home/swap: insecure permissions 0644, 0600 suggested.
五,执行free -m,看看目前内存是多少

                     total        used        free      shared  buff/cache   available
Mem:           7795        1964         171         109        5659        5370
Swap:          7047         995        6052    #可以看到swap空间变成了7个G

六。为了避免系统重启后配置失效,vi  /etc/fstab  #修改这个文件

加入一行: /home/swap   swap   swap   defaults   0   0

 

相关小知识:linux系统mem和swap的关系 转载自:https://www.cnblogs.com/lili-xia/p/11506188.html

free命令相对于top,提供了更简洁的查看系统内存使用情况:

# free -m

mem:表示物理内存统计

buff/cache:表示物理内存的缓存统计

swap:表示硬盘上交换分区的使用情况

系统当前真正可用的内存并不是第一行 free 标记的,他仅代表未被分配的内存

buff/cache列占用过高

buff/cache主要干啥来的?

Linux具有先进的缓存机制,会针对dentry(用于VFS-虚拟文件系统,加速文件路径名到inode的转换)、buffer cache(针对磁盘块的读,写)和 page cache(针对文件 inode 的读写)进行缓存操作来提高读写效率。但是在进行了大量文件操作之后,缓存会把内存资源基本用完,虽然文件读取效率提高了,但是物理内存会被逐渐吃完。

原来是因为系统进行了频繁的文件读写操作,但是为什么操作系统不会主动回收呢,原来是因为drop_caches 的默认参数设置的就是不释放。

drop_caches 的值可以是 0-3 之间的数字,代表不同的含义:

0:不释放(系统默认值)

1:释放页缓存

2:释放dentries和inode

3:释放所有缓存

修改:# echo 1 > /proc/sys/vm/drop_caches

小插曲

当Linux的物理内存快要被耗尽时,系统会把一些进程占用的内存转移到 swap 区,当物理内存被释放一部分时,swap 区的一些内存占用又慢慢回到 mem 区,但是 mem 区却不再是之前的满负荷状态,而是有一部分 free 的内存!

【总结】

1)当物理内存快被耗尽时,系统并没有崩溃,而是拿 swap 做临时内存,当两者都耗尽,系统 OutofMemory

2)物理内存达到峰值,系统中一些不常用的进程内存占用被提到 swap 区

3)当 Men 区的资源进行释放时,被挪到 swap 的内存并不会全部回来,随着系统或者程序的唤醒才会慢慢回到 men 区

4)swap 是内存不够时,磁盘虚拟出来的内存,磁盘主要是 I/O 级别的操作,并不是系统内核级别的操作,处理速度跟 mem 区不是一个等级


版权声明:本文为hkbbkk原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。