MySQL大量使用swap文件-創(chuàng)新互聯(lián)

現(xiàn)象:
    一臺(tái)高配的MySQL數(shù)據(jù)庫服務(wù)器,雙CPU48線程.
    CentOS 7
    本機(jī)磁盤是一萬五千轉(zhuǎn)的Raid 0.系統(tǒng)文件,Swap都分配在了本機(jī)磁盤.
    服務(wù)器掛載了一個(gè)SSD的磁盤陣列.數(shù)據(jù)庫文件都存放在磁盤陣列中.

    系統(tǒng)運(yùn)行之后,發(fā)現(xiàn)系統(tǒng)Swap大量使用,并且本機(jī)磁盤的IO使用率持續(xù)100%.
權(quán)宜之計(jì):
    我把Swap挪到了盤陣中
原因:
    swap insanity
    NUMA架構(gòu)
引用:
    對(duì)于單CPU,多核心的情況,每個(gè)核心訪問內(nèi)存的速度是一樣的,這種架構(gòu)稱為SMP(Symmetric multiprocessing, 對(duì)稱多處理器),又叫UMA(Uniform Memory Architecture,與NUMA相對(duì),一致性內(nèi)存訪問架構(gòu))。
可以看到,每個(gè)CPU都有一組配套的內(nèi)存槽。每個(gè)CPU訪問自身的內(nèi)存插槽,速度都很快,但對(duì)于主板上的其他內(nèi)存插槽,訪問速度就會(huì)下降。這種架構(gòu)被稱為NUMA。
    對(duì)于Linux來說,加載的時(shí)候就會(huì)檢測(cè)內(nèi)存,計(jì)算CPU到內(nèi)存的訪問開銷,將CPU和內(nèi)存分成一組組的。每個(gè)進(jìn)程和線程,都會(huì)繼承父進(jìn)程的NUMA策略,這種策略包括這個(gè)進(jìn)程/線程會(huì)在哪個(gè)CPU上運(yùn)行,分配的內(nèi)存應(yīng)該用哪組插槽的。
    面對(duì)內(nèi)存分配,只要一經(jīng)分配到指定的CPU—內(nèi)存槽,就不會(huì)再挪動(dòng)了。對(duì)于數(shù)據(jù)庫這類應(yīng)用,理想情況下是一個(gè)單一的多線程進(jìn)程,吃掉了幾乎所有的系統(tǒng)內(nèi)存,并盡可能多的消耗其余的系統(tǒng)資源例如IO。
    對(duì)于兩個(gè)CPU的NUMA架構(gòu)來說,如果一個(gè)核心分配的內(nèi)存超過系統(tǒng)內(nèi)存的一半,就會(huì)出現(xiàn)問題。而Linux的分配策略是,首先使用CPU 0,然后再使用CPU 1。這時(shí)候就會(huì)出現(xiàn)一種情況,CPU 0的內(nèi)存組已經(jīng)率先使用完了,但系統(tǒng)還有很多空閑內(nèi)存,都在CPU 1上。這時(shí)候,Linux會(huì)選擇將CPU 0的內(nèi)存刷到磁盤上,以換取可用內(nèi)存。但是,swap過程遠(yuǎn)比跨CPU訪問內(nèi)存要慢啊。這就會(huì)造成內(nèi)存還沒用光,但數(shù)據(jù)庫瘋狂刷盤的現(xiàn)象了。

網(wǎng)站名稱:MySQL大量使用swap文件-創(chuàng)新互聯(lián)
文章起源:http://muchs.cn/article48/csjshp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作網(wǎng)站策劃、定制網(wǎng)站、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管