MySQL大量使用swap檔案
現象:
一臺高配的MySQL資料庫伺服器,雙CPU48執行緒.
CentOS 7
本機磁碟是一萬五千轉的Raid 0.系統檔案,Swap都分配在了本機磁碟.
伺服器掛載了一個SSD的磁碟陣列.資料庫檔案都存放在磁碟陣列中.
系統執行之後,發現系統Swap大量使用,並且本機磁碟的IO使用率持續100%.
權宜之計:
我把Swap挪到了盤陣中
原因:
swap insanity
NUMA架構
引用:
對於單CPU,多核心的情況,每個核心訪問記憶體的速度是一樣的,這種架構稱為SMP(Symmetric multiprocessing, 對稱多處理器),又叫UMA(Uniform Memory Architecture,與NUMA相對,一致性記憶體訪問架構)。
可以看到,每個CPU都有一組配套的記憶體槽。每個CPU訪問自身的記憶體插槽,速度都很快,但對於主機板上的其他記憶體插槽,訪問速度就會下降。這種架構被稱為NUMA。
對於Linux來說,載入的時候就會檢測記憶體,計算CPU到記憶體的訪問開銷,將CPU和記憶體分成一組組的。每個程式和執行緒,都會繼承父程式的NUMA策略,這種策略包括這個程式/執行緒會在哪個CPU上執行,分配的記憶體應該用哪組插槽的。
面對記憶體分配,只要一經分配到指定的CPU—記憶體槽,就不會再挪動了。對於資料庫這類應用,理想情況下是一個單一的多執行緒程式,吃掉了幾乎所有的系統記憶體,並儘可能多的消耗其餘的系統資源例如IO。
對於兩個CPU的NUMA架構來說,如果一個核心分配的記憶體超過系統記憶體的一半,就會出現問題。而Linux的分配策略是,首先使用CPU 0,然後再使用CPU 1。這時候就會出現一種情況,CPU 0的記憶體組已經率先使用完了,但系統還有很多空閒記憶體,都在CPU 1上。這時候,Linux會選擇將CPU 0的記憶體刷到磁碟上,以換取可用記憶體。但是,swap過程遠比跨CPU訪問記憶體要慢啊。這就會造成記憶體還沒用光,但資料庫瘋狂刷盤的現象了。
參考:
http://www.cnblogs.com/Lifehacker/p/database_swap_insanity_on_Linux.html
https://blog.jcole.us/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/
一臺高配的MySQL資料庫伺服器,雙CPU48執行緒.
CentOS 7
本機磁碟是一萬五千轉的Raid 0.系統檔案,Swap都分配在了本機磁碟.
伺服器掛載了一個SSD的磁碟陣列.資料庫檔案都存放在磁碟陣列中.
系統執行之後,發現系統Swap大量使用,並且本機磁碟的IO使用率持續100%.
權宜之計:
我把Swap挪到了盤陣中
原因:
swap insanity
NUMA架構
引用:
對於單CPU,多核心的情況,每個核心訪問記憶體的速度是一樣的,這種架構稱為SMP(Symmetric multiprocessing, 對稱多處理器),又叫UMA(Uniform Memory Architecture,與NUMA相對,一致性記憶體訪問架構)。
可以看到,每個CPU都有一組配套的記憶體槽。每個CPU訪問自身的記憶體插槽,速度都很快,但對於主機板上的其他記憶體插槽,訪問速度就會下降。這種架構被稱為NUMA。
對於Linux來說,載入的時候就會檢測記憶體,計算CPU到記憶體的訪問開銷,將CPU和記憶體分成一組組的。每個程式和執行緒,都會繼承父程式的NUMA策略,這種策略包括這個程式/執行緒會在哪個CPU上執行,分配的記憶體應該用哪組插槽的。
面對記憶體分配,只要一經分配到指定的CPU—記憶體槽,就不會再挪動了。對於資料庫這類應用,理想情況下是一個單一的多執行緒程式,吃掉了幾乎所有的系統記憶體,並儘可能多的消耗其餘的系統資源例如IO。
對於兩個CPU的NUMA架構來說,如果一個核心分配的記憶體超過系統記憶體的一半,就會出現問題。而Linux的分配策略是,首先使用CPU 0,然後再使用CPU 1。這時候就會出現一種情況,CPU 0的記憶體組已經率先使用完了,但系統還有很多空閒記憶體,都在CPU 1上。這時候,Linux會選擇將CPU 0的記憶體刷到磁碟上,以換取可用記憶體。但是,swap過程遠比跨CPU訪問記憶體要慢啊。這就會造成記憶體還沒用光,但資料庫瘋狂刷盤的現象了。
參考:
http://www.cnblogs.com/Lifehacker/p/database_swap_insanity_on_Linux.html
https://blog.jcole.us/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2124410/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- swap檔案檢視
- MySQL如何避免使用swap(ZT)MySql
- MapReduce 大量小檔案
- 用檔案新增Swap分割槽
- 用檔案作為Swap分割槽
- 批量刪除大量小檔案
- 不用swap分割槽,用交換檔案(轉)
- Archlinux 設定休眠到swap檔案Linux
- MySQL之swap配置MySql
- LINUX 手動建立SWAP檔案及刪除Linux
- 檔案系統&&磁碟管理(六)–swap分割槽、迴環裝置、檔案系統配置檔案fstab
- Linux如何快速刪除大量碎小檔案?Linux
- 教你批次歸類大量桌面檔案的方法
- EM執行後產生大量err檔案
- MYSQL 5.7中臨時檔案的使用MySql
- 刪除編輯檔案警告Swap file “…” already exists!
- 高延時下如何快速傳輸大量檔案
- 清理Oracle資料庫大量的SYS使用者審計跟蹤檔案Oracle資料庫
- linux下使用rm命令刪除一個有大量檔案的目錄Linux
- 【Solaris】Solaris檔案系統管理2 SWAP交換分割槽管理
- MySQL配置檔案MySql
- mysql 配置檔案MySql
- MySQL檔案概述MySql
- Python讀取大量Excel檔案並跨檔案批次計算平均值PythonExcel
- MySQL匯入匯出檔案檔案MySql
- PHP匯出大量資料,儲存為CSV檔案PHP
- 怎麼快速複製移動大量電腦檔案?
- 關於websphere5.1產生大量heapdump檔案原因Web
- Mysql資料庫使用Navicat Mysql匯入sql檔案報錯MySql資料庫
- Centos 7 建立一個swap檔案增加虛擬記憶體CentOS記憶體
- Linux系統中增加Swap分割槽檔案步驟方法Linux
- linux中增加swap分割槽或檔案的步驟方法Linux
- 重新命名一千個檔案要多久? Name Mangler 快速為大量檔案重新命名
- mysql 主從日誌檔案mysql-bin檔案清除方法MySql
- mysql物理檔案 02MySql
- MySQL Cluster 配置檔案MySql
- 刪除大量檔案Argument list too long錯誤解決
- 簡單2步就能將大量檔案歸類儲存