望着业务和钱包!对Linux交换分区(Swap)的思考及实战配置

图0

1 前言

Linux系统中物理内存不足时,操作系统会将运行中的程序(比较闲的程序)暂时拿到交换分区(Swap)中,以保证物理内存来运行其它程序。等Swap中的程序要运行时,再从Swap分区中恢复保存的数据到内存中。

2 使用背景

现在服务器内存越来越大,动不动就16G、32G、64G甚至上百G,操作系统官网也给建议尽量使用系统物理内存,交换分区(SWAP)在应用中所占的比例越来越小,甚至不使用了。

可是对于个人、小个体甚至小微企业来说服务器的费用还是能省则省,内存已然捉襟见肘。本人有一台1核/2G的服务器和一台2核/4G的服务器,部署了五六个应用后就到极限了,动不动就崩溃了。

特别在微服务大行其道的今天,一个项目上去内存就占满了。所以,再嚼嚼交换分区,一切为了钱。

3 Swap分区大小选择

Swap分区大小设置的建议:

  1. 物理内存小于2GB,Swap建议为物理内存的2倍;
  2. 物理内存2GB~8GB,Swap分区大小等于物理内存;
  3. 物理内存8GB~64GB,Swap分区大小最小为8G;
  4. 物理内存大于64GB,Swap分区至少为16G;

事实上,Swap分区的大小并不取决于物理内存的量,而是根据业务场景,客户需求和系统中内存的负荷,所以抛开业务场景、显示来谈Swap意义并不大;如果我的服务器内存很大,也不会瞎折腾O(∩_∩)O哈哈~

图1

4 何时使用Swap

不是等所有的物理内存都消耗完毕之后,才会去使用Swap的空间,什么时候使用是由swappiness参数值控制及系统调度的。

目前云服务器的Swap起始状态都是0,swappiness也为0,这就表示只能使用物理内存,如下图:

cat /proc/sys/vm/swappiness
图2

该值在CentOS 6上是60,在CentOS 7上建议是30,可以看出随着硬件的降价,交换分区的比重越来越轻了。

swappiness设置为0时会最大限度使用物理内存,然后才是Swap空间;设置为100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

现在生产服务器用户动不动上百万,内存上百G,对用户体验,相应速度都要求极高,我们可以降低系统对Swap的使用,甚至全部使用内存。

5 如何修改swappiness参数

5.1 临时性修改,系统重启恢复默认

sysctl vm.swappiness=10

cat /proc/sys/vm/swappiness
图3

5.2 永久修改,重启生效

在/etc/sysctl.conf 文件里添加如下参数:

vm.swappiness=10

# 加载配置
sysctl -p
图4

6 创建交换分区

云服务器默认交换分区为0,默认只使用物理内存;我的小服务器只能手动设置开启交换分区咯!下面是创建并使用交换分区的步骤。

6.1 创建Swap分区

/dev/zero文件代表一个永远输出0的设备文件,可以用它来创建空文件。后两个参数可以控制文件大小。

dd if=/dev/zero of=/mnt/swap bs=512 count=8388616

我的服务器内存为4G,根据建议Swap大小设置为4G,创建过程有点慢,需要耐心等待。

图5

注意:创建swap大小为bs*count=4294971392(4G)

6.2 格式化swap文件

mkswap /mnt/swap
图6

6.3 启用swap文件(上文已提到)

  • 临时调整
sysctl -w vm.swappiness=60
  • 永久调整,需要重启服务器
vim  /etc/sysctl.conf
vm.swappiness=60

# 加载配置
sysctl -p

6.4 激活使用这个swap文件

  • 激活swap文件
swapon /mnt/swap
图7
  • 设置自动挂载交换分区
echo "/mnt/swap swap swap defaults 0 0" >> /etc/fstab

6.5 查看交换分区状态

swapon -s

free -m
图8

可以看到,系统并没有使用到我创建的交换空间,我的物理内存还剩1G,后面跑下程序试试。

7 删除交换分区

7.1 停止交换分区

swapoff /mnt/swapfile

7.2 删除/etc/fstab中的自动挂载

vim /etc/fstab

# 注释或删除掉
# /mnt/swapfile swap swap defaults 0 0

7.3 删除分区文件

rm /mnt/swapfile

8 总结

swappiness的值为0~100,我的CentOS 7设置为60,也就是内存使用到40%就会使用交换分区。

如果业务、经济允许,还是使用物理内存好,毕竟内存速度比磁盘快得多;同时交换分区如果经常大量使用,会造加大系统io开销,所以该升级内存升级内存,该调整参数调整参数。

另外有一种说法,使用交换分区(Swap)会缩短硬盘使用寿命,这个没验证过,同时我是用的是云服务器,无所谓了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容