服务器 交换分区(Swap) 设置
周末的時(shí)候HBase集群一臺(tái)子節(jié)點(diǎn)宕機(jī),查看Ganglia及內(nèi)存使用情況,發(fā)現(xiàn)節(jié)點(diǎn)Swap空間耗盡,但奇怪的是,系統(tǒng)物理內(nèi)存卻還是非常的富足。我們都知道
Swap空間的作用:
Swap空間的作用可簡(jiǎn)單描述為:當(dāng)系統(tǒng)的物理內(nèi)存不夠用的時(shí)候,就需要將物理內(nèi)存中的一部分空間釋放出來(lái),以供當(dāng)前運(yùn)行的程序使用。那些被釋放的空間可能來(lái)自一些很長(zhǎng)時(shí)間沒(méi)有什么操作的程序,這些被釋放的空間被臨時(shí)保存到Swap空間中,等到那些程序要運(yùn)行時(shí),再?gòu)腟wap中恢復(fù)保存的數(shù)據(jù)到內(nèi)存中。這樣,系統(tǒng)總是在物理內(nèi)存不夠時(shí),才進(jìn)行Swap交換。
Swap配置對(duì)性能的影響:
分配太多的Swap空間會(huì)浪費(fèi)磁盤(pán)空間,而Swap空間太少,則系統(tǒng)會(huì)發(fā)生錯(cuò)誤。 如果系統(tǒng)的物理內(nèi)存用光了,系統(tǒng)就會(huì)跑得很慢,但仍能運(yùn)行;如果Swap空間用光了,那么系統(tǒng)就會(huì)發(fā)生錯(cuò)誤。例如,Web服務(wù)器能根據(jù)不同的請(qǐng)求數(shù)量衍生出多個(gè)服務(wù)進(jìn)程(或線程),如果Swap空間用完,則服務(wù)進(jìn)程無(wú)法啟動(dòng),通常會(huì)出現(xiàn)“application is out of memory”的錯(cuò)誤,嚴(yán)重時(shí)會(huì)造成服務(wù)進(jìn)程的死鎖。因此Swap空間的分配是很重要的。
那么,真的是當(dāng)系統(tǒng)物理內(nèi)存不夠用的時(shí)候,系統(tǒng)才會(huì)使用Swap空間嗎?否!他娘的。。。
其實(shí)虛擬內(nèi)存并不是等到物理內(nèi)存用盡了才使用的,是否盡量的使用或不使用swap在內(nèi)核空間有一個(gè)參數(shù)控制。
cat /proc/sys/vm/swappiness
60
swappiness=0的時(shí)候表示最大限度使用物理內(nèi)存,然后才是 swap空間,swappiness=100的時(shí)候表示積極的使用swap分區(qū),并且把內(nèi)存上的數(shù)據(jù)及時(shí)的搬運(yùn)到swap空間里面。
對(duì)于現(xiàn)在動(dòng)輒上百G物理內(nèi)存的服務(wù)器來(lái)說(shuō),究竟為其Linux系統(tǒng)設(shè)置多大的交換分區(qū)合適呢,為此,引用紅帽官方文庫(kù)里的一段文字進(jìn)行說(shuō)明。
目前Red Hat推薦交換分區(qū)的大小應(yīng)當(dāng)與系統(tǒng)物理內(nèi)存的大小保持線性比例關(guān)系。不過(guò)在小于2GB物理內(nèi)存的系統(tǒng)中,交換分區(qū)大小應(yīng)該設(shè)置為內(nèi)存大小的兩倍,如果內(nèi)存大小多于2GB,交換分區(qū)大小應(yīng)該是物理內(nèi)存大小加上2GB。其原因在于,系統(tǒng)中的物理內(nèi)存越大,對(duì)于內(nèi)存的負(fù)荷可能也越大。 但是,如果物理內(nèi)存大小擴(kuò)展到數(shù)百GB,這樣做就沒(méi)什么意義了。 實(shí)際上,系統(tǒng)中交換分區(qū)的大小并不取決于物理內(nèi)存的量,而是取決于系統(tǒng)中內(nèi)存的負(fù)荷。Red Hat Enterprise Linux 5可以在這樣的情況下工作:完全沒(méi)有交換分區(qū),而且系統(tǒng)中匿名內(nèi)存頁(yè)和共享內(nèi)存頁(yè)小于3/4的物理內(nèi)存量。在這種情況下,系統(tǒng)會(huì)將匿名內(nèi)存頁(yè)和共享內(nèi)存頁(yè)鎖定在物理內(nèi)存中,而使用剩余的物理內(nèi)存來(lái)緩沖文件系統(tǒng)數(shù)據(jù)(pagecache),當(dāng)內(nèi)存耗盡時(shí),系統(tǒng)內(nèi)核只會(huì)回收利用這些pagecache內(nèi)存。 考慮到以下情況: 1)安裝系統(tǒng)時(shí)難以確定內(nèi)存的負(fù)荷,如何設(shè)置交換分區(qū)大小 2)系統(tǒng)中物理內(nèi)存越大,所需交換分區(qū)就會(huì)越少 因此,在Red Hat Enterprise Linux 5中,以下是設(shè)置合適的交換分區(qū)大小的規(guī)則: 小于等于4G物理內(nèi)存的系統(tǒng),至少設(shè)置2GB的交換分區(qū) 4G~16G物理內(nèi)存的系統(tǒng),至少設(shè)置4GB的交換分區(qū) 16G~64G物理內(nèi)存的系統(tǒng),至少設(shè)置8GB的交換分區(qū) 64G~256G物理內(nèi)存的系統(tǒng),至少設(shè)置16GB的交換分區(qū)
如何修改呢?
1.修改此處vm.swappiness=10,但是你會(huì)發(fā)現(xiàn)重啟后又變成60.
2.要徹底修改,還是要修改配置/etc/sysctl.conf
在這個(gè)文檔的最后加上這樣一行:vm.swappiness=10
然后保存,重啟。ok,你的設(shè)置就生效了。
涉及到HBase來(lái)說(shuō),其在系統(tǒng)配置一節(jié)中,也有建議,可見(jiàn),HBase建議設(shè)置swappiness為0,盡量使用物理內(nèi)存:
==================================
查看修改swap
==================================
1查看swap 空間大小(總計(jì)):
# free -m默認(rèn)單位為k, -m 單位為M
totalusedfreesharedbufferscached
Mem:377180197019110
-/+ buffers/cache:50327
Swap:5720572
2查看swap 空間(file(s)/partition(s)):
包括 文件 和 分區(qū)的詳細(xì)信息
# swapon -s
等價(jià)于
# cat /proc/swaps
3.在空間合適處創(chuàng)建swap文件
[root@emausr]#cdswap
[root@emaswap]#ddif=/dev/zeroof=swapfilebs=402400count=10000
10000+recordsin
10000+recordsout
[root@emaswap]#ls-al
total10024
drwxr-xr-x2rootroot4096
drwxr-xr-x19rootroot4096
-rw-r--r--1rootroot4013500000
[root@emaswap]#mkswapswapfile
激活swap文件
swaponswapfile
totalusedfreesharedbufferscached
Mem:202619299771755
-/+buffers/cache:1661860
Swap:40084008
總結(jié)
以上是生活随笔為你收集整理的服务器 交换分区(Swap) 设置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 路由器有几种重启方式有路由器如何重启
- 下一篇: 设计项目管理软件(多项目管理软件)