Redis swap空間(虛擬內(nèi)存)的使用詳解
swap空間對于操作系統(tǒng)來說比較重要,當(dāng)我們使用操作系統(tǒng)的時(shí)候,如果系統(tǒng)內(nèi)存不足,常常會將一部分內(nèi)存數(shù)據(jù)頁進(jìn)行swap操作,以解決臨時(shí)的內(nèi)存困境。swap空間由磁盤提供,對于高并發(fā)場景下,swap空間的使用會嚴(yán)重降低系統(tǒng)性能,因?yàn)樗肓舜疟PIO操作。
在Linux中,提供了free命令來查詢操作系統(tǒng)的內(nèi)存使用情況,free 命令的結(jié)果中也包含了swap相關(guān)的情況,例如下面的結(jié)果中:
[root@VM-0-14-centos ~]# free -ht total used free shared buff/cache available Mem: 1.8G 1.3G 72M 692K 433M 283M Swap: 0B 0B 0B Total: 1.8G 1.3G 72M
我們可以看到swap的值都是0,說明當(dāng)前的內(nèi)存是沒有配置swap空間的,目前的操作系統(tǒng)的內(nèi)存是足夠的,通常情況下swap一行的used列應(yīng)該是0B比較好,它證明你的操作系統(tǒng)內(nèi)存充足,沒有發(fā)生swap空間的交換操作。
實(shí)時(shí)查看swap的使用
Linux中還為我們封裝了vmstat這個(gè)命令來查看系統(tǒng)的相關(guān)性能指標(biāo),其中也包含swap空間,其中和swap有關(guān)的指標(biāo)是si和so,分別代表swap in和swap out,我們看看vmstat的執(zhí)行結(jié)果:
[root@VM-0-14-centos ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 4 0 0 73712 84464 362016 0 0 7 26 7 1 1 1 98 0 0
查看執(zhí)行進(jìn)程占用swap的情況
在Linux操作系統(tǒng)中,/proc/pid/smaps這個(gè)文件記錄了當(dāng)前進(jìn)程所對應(yīng)的內(nèi)存映像信息,這個(gè)信息對于查詢指定進(jìn)程的swap使用情況很有幫助。下面以一個(gè)Redis實(shí)例進(jìn)行說明:
[root@VM-0-14-centos ~]# ps -ef|grep redis root 1711 1 0 Jul20 ? 00:20:15 src/redis-server 127.0.0.1:21243 root 2370 1 0 Jul20 ? 00:20:18 src/redis-server 127.0.0.1:21244 root 2371 1 0 Jul20 ? 00:20:13 src/redis-server 127.0.0.1:21263 root 7815 5781 0 23:39 pts/3 00:00:00 grep --color=auto redis root 14804 1 0 Jul20 ? 00:20:39 redis-server *:6379 我們以14804這個(gè)redis進(jìn)程為例 [root@VM-0-14-centos ~]# cat /proc/14804/smaps | grep Swap Swap: 0 kB Swap: 0 kB Swap: 0 kB ..... Swap: 0 kB Swap: 0 kB Swap: 0 kB
通常情況下,Linux服務(wù)器不會等到所有物理內(nèi)存都被使用完再使用swap空間,它引入swapiness這個(gè)變量來決定操作系統(tǒng)使用swap空間的傾向程度,它的取值是0~100,值越大,表示操作系統(tǒng)使用swap的可能性越高,反之則越低。swapiness變量值存在于系統(tǒng)配置文件/proc/sys/vm/swappiness 和/etc/sysctl.conf中,其前面的文件在重啟之后,就失效了,只有將這個(gè)值寫入后面的文件,才能長久的保存下去。
[root@VM-0-14-centos ~]# cat /proc/sys/vm/swappiness 30
寫入/etc/sysctl.conf的方法如下:
echo vm.swappiness={value} >> /etc/sysctl.conf
Redis在不同版本下,對于swapiness的建議配置也不一樣,通常情況下,swapness的值可以設(shè)置為:0、1、60、100這幾個(gè)。
其中:
設(shè)置為60是默認(rèn)值,
設(shè)置為100則操作系統(tǒng)會主動使用swap空間,
設(shè)置成為0的話,在Linux3.4以及更早的Linux版本中,內(nèi)存不夠時(shí),傾向使用swap而不是OOM killer,在Linux3.5以及之后的版本中,傾向使用OOM Killer而不是swap空間
設(shè)置為1的話,在Linux3.5以及后續(xù)版本中,內(nèi)存不夠用的時(shí)候,傾向于使用swap空間,而不是OOM Killer
多說一句:OOM kill是指Linux發(fā)現(xiàn)操作系統(tǒng)不可用的時(shí)候,也就是Out Of Memory的時(shí)候,強(qiáng)制殺死一些非內(nèi)核進(jìn)程,來保證有足夠的可用內(nèi)存進(jìn)行分配。一般OOM的日志記錄在系統(tǒng)日志/var/log/message中
以上就是Redis swap空間的使用示例的詳細(xì)內(nèi)容,更多關(guān)于Redis swap空間的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Redis基本數(shù)據(jù)類型String常用操作命令
這篇文章主要為大家介紹了Redis基本數(shù)據(jù)類型String常用操作命令,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Redis bitmap 實(shí)現(xiàn)簽到案例(最新推薦)
這篇文章主要介紹了Redis bitmap 實(shí)現(xiàn)簽到案例,通過設(shè)計(jì)簽到功能對應(yīng)的數(shù)據(jù)庫表,結(jié)合sql語句給大家講解的非常詳細(xì),具體示例代碼跟隨小編一起看看吧2024-07-07

分布式架構(gòu)Redis中有哪些數(shù)據(jù)結(jié)構(gòu)及底層實(shí)現(xiàn)原理

基于redis實(shí)現(xiàn)的點(diǎn)贊功能設(shè)計(jì)思路詳解

在Redis數(shù)據(jù)庫中實(shí)現(xiàn)分布式速率限制的方法