mysql获取服务器的剩余空间_mysql服务器内存耗尽,并占用大量swap
1)服務(wù)器配置:
cpu:{Intel(R) Xeon(R)
CPU?X5650?@ 2.67GHz*16
mem:32
2)mysql innodb:
innodb_buffer_pool_size = 22G
2.#free -g
[root@mysql11 ~]# free -g
total?used?free?shared?buffers?cached
Mem:?31?31?0?0?0?5
-/+
buffers/cache:?25?5
Swap:?3?2?1
3、[root@mysql11 ~]# vmstat -a -S M 4
procs -----------memory---------- ---swap-- -----io---- --system--
-----cpu------
r?b?swpd?free?inact active?si?so?bi?bo?in?cs us sy id wa st
1?0?2320?93?2411?29248?0?0?12?77?0?1?3?2 95?0?0
1?0?2320?92?2412?29248?0?0?44?2522 22313 40230?7?4 90?0?0
4?0?2320?92?2413?29248?0?0?320?2528
25147 47254?9?5
86?0?0
4、用top看
USER?NI?RES?SHR?VIRT?PID S
%MEM?TIME+?PR %CPU
SWAP?CODE DATA COMMAND
mysql?0?25g 5852 28.4g 14463 S 80.1?48948:37?15 286.2 3.2g 8352?28g
mysqld
5、總結(jié):
從top命令可看出:
1)mysql進(jìn)程 ,總共需要的內(nèi)存為28G(DATA 40g),
2)mysql進(jìn)程,被 置換的虛擬內(nèi)存大小為3.2g(SWAP 3.2g)
3)mysql進(jìn)程,程序碼占用內(nèi)存大小為 8352(kb)
4)mysql進(jìn)程,非程序碼占用內(nèi)存大小為 26g
綜上所述,Linux服務(wù)器操作系統(tǒng)本身cache掉的內(nèi)存大小約為5G左右。
6.業(yè)務(wù)運(yùn)行環(huán)境:MySQL數(shù)據(jù)量為98G,會(huì)頻繁進(jìn)行大批量的數(shù)據(jù)導(dǎo)入,數(shù)據(jù)讀取。相當(dāng)于一個(gè)小型的數(shù)據(jù)倉(cāng)庫(kù)。
MySQL如何避免使用swap
Linux有很多很好的內(nèi)存、IO調(diào)度機(jī)制,但是并不會(huì)適用于所有場(chǎng)景。對(duì)于DBA來(lái)說(shuō)Linux比較讓人頭疼的一個(gè)地方是,它不會(huì)因?yàn)镸ySQL很重要就避免將分配給MySQL的地址空間映射到swap上。對(duì)于頻繁進(jìn)行讀寫(xiě)操作的系統(tǒng)而言,數(shù)據(jù)看似在內(nèi)存而實(shí)際上在磁盤(pán)是非常糟糕的,響應(yīng)時(shí)間的增長(zhǎng)很可能直接拖垮整個(gè)系統(tǒng)。這篇blog主要講講我們作為DBA,怎樣盡量避免MySQL慘遭swap的毒手。
首先我們要了解點(diǎn)基礎(chǔ)的東西,比如說(shuō)為什么會(huì)產(chǎn)生swap。假設(shè)我們的物理內(nèi)存是16G,swap是4G。如果MySQL本身已經(jīng)占用了12G物理內(nèi)存,
而同時(shí)其他程序或者系統(tǒng)模塊又需要6G內(nèi)存,這時(shí)候操作系統(tǒng)就可能把MySQL所擁有的一部分地址空間映射到swap上去。
cp一個(gè)大文件,或用mysqldump導(dǎo)出一個(gè)很大的數(shù)據(jù)庫(kù)的時(shí)候,文件系統(tǒng)往往會(huì)向Linux申請(qǐng)大量的內(nèi)存作為cache,一不小心就會(huì)導(dǎo)致L使用swap。這個(gè)情景比較常見(jiàn),以下是最簡(jiǎn)單的三個(gè)調(diào)整方法:
1、/proc/sys/vm/swappiness的內(nèi)容改成0(臨時(shí)),/etc/sysctl.conf上添加vm.swappiness=0(永久)
這個(gè)參數(shù)決定了Linux是傾向于使用swap,還是傾向于釋放文件系統(tǒng)cache。在內(nèi)存緊張的情況下,數(shù)值越低越傾向于釋放文件系統(tǒng)cache。
當(dāng)然,這個(gè)參數(shù)只能減少使用swap的概率,并不能避免Linux使用swap。
2、修改MySQL的配置參數(shù)innodb_flush_method,開(kāi)啟O_DIRECT模式。
這種情況下,InnoDB的buffer pool會(huì)直接繞過(guò)文件系統(tǒng)cache來(lái)訪問(wèn)磁盤(pán),但是redo
log依舊會(huì)使用文件系統(tǒng)cache。值得注意的是,Redo
log是覆寫(xiě)模式的,即使使用了文件系統(tǒng)的cache,也不會(huì)占用太多。
3、添加MySQL的配置參數(shù)memlock
這個(gè)參數(shù)會(huì)強(qiáng)迫mysqld進(jìn)程的地址空間一直被鎖定在物理內(nèi)存上,對(duì)于os來(lái)說(shuō)是非常霸道的一個(gè)要求。必須要用root帳號(hào)來(lái)啟動(dòng)MySQL才能生效。
還有一個(gè)比較復(fù)雜的方法,指定MySQL使用大頁(yè)內(nèi)存(Large
Page)。Linux上的大頁(yè)內(nèi)存是不會(huì)被換出物理內(nèi)存的,和memlock有異曲同工之妙。具體的配置方法可以參
考:http://harrison-fisk.blogspot.com/2009/01/enabling-innodb-large-pages-
on-linux.html
總結(jié)
以上是生活随笔為你收集整理的mysql获取服务器的剩余空间_mysql服务器内存耗尽,并占用大量swap的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: aopaspect区别_面试官:什么是A
- 下一篇: can总线rollingcounter_