MySQL之swap配置
Swappiness
Swappiness is a Linux kernel parameter that controls the relative weight given to swapping out runtime memory, as opposed to dropping pages from the system page cache. Swappiness can be set to values between 0 and 100 inclusive. A low value causes the kernel to avoid swapping, a higher value causes the kernel to try to use swap space. The default value is 60, and for most desktop systems, setting it to 100 may affect the overall performance, whereas setting it lower (even 0) may decrease response latency。
大概意思是說:Swappiness 是一個linux核心引數,它控制實體記憶體交換出去的相對權重。swappiness可以被設定為0~100之間,預設為60,值越高優先使用swap的機率越大。對於大多數作業系統來講,設定swappiness為100可能會影響整體效能,而設定很小的值(甚至為0)可能會降低響應延遲。
With kernel version 3.5 and over, as well as kernel version 2.6.32-303 and over, it is likely better to use 1 for cases where 0 used to be optimal
在核心版本3.5以及以上和 RHEL/CentOS kernels核心版本2.6.32-303.el6以及以上,建議使用1來代替之前核心版本下的swappiness=0的效果。
此修改在很多資料都特別提示了,如RHEL官方:
一般來說,MySQL,特別是InnoDB管理記憶體快取,它佔用的記憶體比較多,不經常訪問的記憶體也會不少,這些記憶體如果被Linux錯誤的交換出去了,將浪費很多CPU和IO資源。 InnoDB自己管理快取,cache的檔案資料來說佔用了swap,對InnoDB幾乎沒有任何好處。
所以,之前的核心版本下我們在MySQL的伺服器上最好設定vm.swappiness=0。
在之前核心版本的OS中,vm.swappiness = 0表示儘量少的使用swap,但也會使用swap空間的,並不是完全禁用swap。
新的核心版本(核心版本3.5以及以上和 RHEL/CentOS kernels核心版本2.6.32-303以及以上),vm.swappiness = 0的行為發生了變化,它更多的避免了swap交換,除非(nr_free + nr_filebacked < high watermark)時才會swap,也就是說空閒記憶體和檔案快取基本沒有了才會觸發記憶體swap,這樣的話:記憶體如果不夠了,Linux有可能觸發OOM,從而kill掉耗費記憶體最多的MySQL程式。
參考wiki:
解決辦法
1、儘量保證Linux作業系統還有足夠的記憶體
2、針對MySQL的伺服器OS:
之前的核心版本,建議設定vm.swappiness=0
最新的核心(核心版本3.5以及以上和 RHEL/CentOS kernels核心版本2.6.32-303.el6以及以上),建議設定vm.swappiness=1
3、考慮設定 /proc/(pidof -s mysqld)/oom_adj為較小的值來儘量避免MySQL由於記憶體不足而被關閉。
值的範圍為-16~15,“-17”是一個特殊的值。如果設定為-17,就會禁止OOM Killer發出的訊號(從Linux 2.6.12開始支援設定-17)。
例如:echo -15 > /proc/(pidof -s mysqld)/oom_score_adj
修改swappiness的方法
#臨時修改
# Set the swappiness value as root
echo 10 > /proc/sys/vm/swappiness
# Alternatively, run this
sysctl -w vm.swappiness=10
# Verify the change
cat /proc/sys/vm/swappiness
10
# Alternatively, verify the change
sysctl vm.swappiness
vm.swappiness = 10
#永久生效需要修改配置檔案sysctl.conf
/etc/sysctl.conf
vm.swappiness = 10
修改mysql的oom_adj值
# cat /proc/(pidof -s mysqld)/oom_score_adj
0
# echo -15 > /proc/(pidof -s mysqld)/oom_score_adj
#當然,如果需要的話可以完全關閉 OOM killer(不推薦用在生產環境):
# sysctl -w vm.overcommit_memory=2
# echo "vm.overcommit_memory=2" >> /etc/sysctl.conf
參考連結:
https://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/
http://blog.csdn.net/longxibendi/article/details/38146521
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27000195/viewspace-2120775/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL如何避免使用swap(ZT)MySql
- MySQL基礎之MySQL 5.7 新增配置MySql
- MySQL 主從配置-之-一主一從MySql
- MySQL進階【八】—— MySQL優化之my.conf配置詳解MySql優化
- mysql配置MySql
- swap擴容
- swap 跟 fstab
- Mysql安全配置MySql
- MySQL效能最佳化之Open_Table配置引數的合理配置建議MySql
- IPP SWAP孵化器|IPP SWAP系統開發分析
- 024,Swap Nodes in PairsAI
- Linux Swap擴容Linux
- MySQL配置檔案MySql
- MySQL多例項配置MySql
- mysql大頁配置MySql
- MySQL安裝配置MySql
- Mac 下配置 MySQLMacMySql
- mysql主從配置MySql
- mysql 配置檔案MySql
- 【Mysql】Windows下安裝和配置MysqlMySqlWindows
- MySQL(六):MySQL之MVCCMySqlMVC
- 在 Windows 平臺下安裝與配置 MySQL 5.7.36之啟動與關閉MySQL服務WindowsMySql
- linux 修改swap空間Linux
- linux 禁止swap交換Linux
- Leetcode 24 Swap Nodes in PairsLeetCodeAI
- LINUX 建立swap空間Linux
- mysql 5.7主從配置MySql
- mysql安裝及配置MySql
- mysql5.7MHA配置MySql
- MySQL安全配置基線MySql
- JPA配置mysql連線MySql
- 【MySQL】安裝與配置MySql
- MySQL主從同步配置MySql主從同步
- docker mysql 主從配置DockerMySql
- MySQL安裝與配置MySql
- MySQL配置與啟動MySql
- 重返MySQL之MySQL基礎MySql
- MySQL 之 USINGMySql
- MYSQL之 GroupCommitMySqlMIT