linux調(diào)優(yōu)之swap設(shè)置方式
通過(guò)free -h查詢(xún)到
內(nèi)存還剩余很多,卻使用 swap 分區(qū);
原因分析
1.swap設(shè)置開(kāi)啟的閥值過(guò)大,造成內(nèi)存達(dá)到可使用swap的值
2.docker 設(shè)置了內(nèi)存限制,但沒(méi)限制swap的值(待求證)
3.根虛擬機(jī)machine.slice和系統(tǒng)system.slices、user.slices等使用了swap空間。
1.swap設(shè)置大小
安裝系統(tǒng)時(shí),選擇swap分區(qū);swap不是越大越好,越大的時(shí)候說(shuō)明內(nèi)存不夠用,應(yīng)該增加內(nèi)存。
redhat官方建議:
- 物理內(nèi)存小于等于2GB的swap
- 應(yīng)設(shè)置為物理內(nèi)存的2倍
- 物理內(nèi)存大于2GB小于等于8G時(shí)swap
- 應(yīng)設(shè)置為等同與物理內(nèi)存的大小
- 物理內(nèi)存大于8GB時(shí)swap
- 應(yīng)設(shè)置為大于等于4GB但不超過(guò)8GB。
自己實(shí)際使用時(shí),因?yàn)槭褂昧薱entos的一鍵安裝腳本anaconda-ks.cfg,
為了方便分配內(nèi)存,所以固定大小配置,建議swap分區(qū)大小規(guī)則:
- 1.當(dāng)小于4G時(shí)
- 設(shè)置成4G;
- 2.當(dāng)大于4G到8G時(shí)
- 設(shè)置成8G
- 3.大于8G時(shí)
設(shè)置成16G
2.swap何時(shí)使用的時(shí)機(jī)(開(kāi)啟的閥值)
#查詢(xún)默認(rèn)的值 cat /proc/sys/vm/swappiness
centos7默認(rèn)值可能是30;就是當(dāng)內(nèi)存使用>=(100-30=70)%內(nèi)存總量時(shí),開(kāi)始使用內(nèi)存;
- 當(dāng)值為0時(shí),表示內(nèi)存使用率>100%時(shí)使用內(nèi)存,則表明【盡量】不使用swap,實(shí)際真占了100%后,還是會(huì)繼續(xù)使用;
- 當(dāng)值為100時(shí),表示內(nèi)存使用率>0%時(shí)使用內(nèi)存,這樣則無(wú)時(shí)無(wú)刻不使用swap;
3.如何修改swappiness(開(kāi)啟的閥值)
當(dāng)使用內(nèi)存>=90%時(shí)才使用內(nèi)存;
#臨時(shí)設(shè)置 echo 10 > /proc/sys/vm/swappiness sysctl -p #生效
#永久設(shè)置 echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改 sysctl -p #生效
能有效使用內(nèi)存,增強(qiáng)性能;如果機(jī)器一直長(zhǎng)期超過(guò)70%的內(nèi)存使用量,實(shí)際應(yīng)該想想是不是要增加內(nèi)存;
刪除、禁用swap分區(qū),不掛載swap
理解/dev/dm-0,dm-1,dm-2
#1.查看交換分區(qū)掛載磁盤(pán) swapon -s #2.根據(jù)上面的查找,填充下面的【可能會(huì)卡很久,因?yàn)樵诮粨Q到物理內(nèi)存,所以可跳過(guò)到3】 swapoff /dev/X #3.刪除分區(qū)掛載 vi /etc/fstab #3.1 - 使用#號(hào)注釋swap掛載信息的行,如下: #UUID=5c6b53d0-7964-4a24-a294-d48f3ad3e461 swap swap defaults 0 0 #3.2 - 也可能是其他分區(qū),如下: #/dev/mapper/centos-swap swap swap defaults 0 0
以上操作后,需要重啟服務(wù)器生效
#重啟服務(wù)器 reboot
#4. free -h 查看生效 如果swap分區(qū)total=0則生效
與配置0區(qū)別,最大化使用物理內(nèi)存
只要開(kāi)啟swap分區(qū),不能保證一定不會(huì)用swap,即使配置為0,當(dāng)為0時(shí),內(nèi)存確實(shí)不夠時(shí)會(huì)增大內(nèi)存回收頻率,增加cpu使用率
#永久設(shè)置 echo "vm.swappiness=0" >> /etc/sysctl.conf #永久修改 sysctl -p #生效
以上操作后,需要重啟服務(wù)器生效
另,如果docker的swap未設(shè)置或設(shè)置不合理造成swap提前使用(未驗(yàn)證);
則需要設(shè)置docker的swap;
限制docker 的swap使用
參數(shù)–memory-swap

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
linux下如何創(chuàng)建守護(hù)進(jìn)程的步驟
本篇文章主要介紹了linux下如何創(chuàng)建守護(hù)進(jìn)程的步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
Ubuntu設(shè)置程序開(kāi)機(jī)自啟動(dòng)的操作步驟
在部署程序到邊緣端時(shí),我們總希望可以通電即啟動(dòng)我們寫(xiě)好的程序,本篇博客用以記錄如何在ubuntu開(kāi)機(jī)執(zhí)行某條命令或者某個(gè)可執(zhí)行程序,需要的朋友可以參考下2025-06-06
Apache?Pulsar集群搭建部署詳細(xì)過(guò)程
這篇文章主要介紹了Apache?Pulsar集群搭建過(guò)程,搭建Pulsar集群至少需要3個(gè)組件:ZooKeeper集群、BookKeeper集群和Broker集群,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02
Nginx+PHP+MySQL雙機(jī)互備、全自動(dòng)切換方案
在生產(chǎn)應(yīng)用中,某臺(tái)“Nginx+PHP+MySQL”接口數(shù)據(jù)服務(wù)器,扮演的角色十分重要,如果服務(wù)器硬件或Nginx、MySQL發(fā)生故障,而短時(shí)間內(nèi)無(wú)法恢復(fù),后果將非常嚴(yán)重。為了避免單點(diǎn)故障,我設(shè)計(jì)了此套方案,編寫(xiě)了failover.sh腳本,實(shí)現(xiàn)了雙機(jī)互備、全自動(dòng)切換,故障轉(zhuǎn)移時(shí)間只需幾十秒。2008-12-12
Linux使用parted進(jìn)行磁盤(pán)分區(qū)的操作指南
Linux 中的 parted 命令是一個(gè)用于創(chuàng)建、修改和管理磁盤(pán)分區(qū)的多功能工具,它支持傳統(tǒng)的 MBR(Master Boot Record:主引導(dǎo)記錄)和現(xiàn)代的 GPT分區(qū)方案,本文給大家介紹了Linux使用parted進(jìn)行磁盤(pán)分區(qū)的操作指南,需要的朋友可以參考下2025-01-01

