MySQL如何避免使用swap(ZT)
Linux有很多很好的記憶體、IO排程機制,但是並不會適用於所有場景。對於DBA來說Linux比較讓人頭疼的一個地方是,它不會因為MySQL很重要就避免將分配給MySQL的地址空間對映到swap上。對於頻繁進行讀寫操作的系統而言,資料看似在記憶體而實際上在磁碟是非常糟糕的,響應時間的增長很可能直接拖垮整個系統。這篇blog主要講講我們作為DBA,怎樣儘量避免MySQL慘遭swap的毒手。
首先我們要了解點基礎的東西,比如說為什麼會產生swap。假設我們的實體記憶體是16G,swap是4G。如果MySQL本身已經佔用了12G實體記憶體,而同時其他程式或者系統模組又需要6G記憶體,這時候作業系統就可能把MySQL所擁有的一部分地址空間對映到swap上去。
cp一個大檔案,或用mysqldump匯出一個很大的資料庫的時候,檔案系統往往會向Linux申請大量的記憶體作為cache,一不小心就會導致L使用swap。這個情景比較常見,以下是最簡單的三個調整方法:
1、/proc/sys/vm/swappiness的內容改成0(臨時),/etc/sysctl.conf上新增vm.swappiness=0(永久)
這個引數決定了Linux是傾向於使用swap,還是傾向於釋放檔案系統cache。在記憶體緊張的情況下,數值越低越傾向於釋放檔案系統cache。
當然,這個引數只能減少使用swap的概率,並不能避免Linux使用swap。
2、修改MySQL的配置引數innodb_flush_method,開啟O_DIRECT模式。
這種情況下,InnoDB的buffer pool會直接繞過檔案系統cache來訪問磁碟,但是redo log依舊會使用檔案系統cache。值得注意的是,Redo log是覆寫模式的,即使使用了檔案系統的cache,也不會佔用太多。
3、新增MySQL的配置引數memlock
這個引數會強迫mysqld程式的地址空間一直被鎖定在實體記憶體上,對於os來說是非常霸道的一個要求。必須要用root帳號來啟動MySQL才能生效。
還有一個比較複雜的方法,指定MySQL使用大頁記憶體(Large Page)。Linux上的大頁記憶體是不會被換出實體記憶體的,和memlock有異曲同工之妙。具體的配置方法可以參考:http://harrison-fisk.blogspot.com/2009/01/enabling-innodb-large-pages-on-linux.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-694971/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL大量使用swap檔案MySql
- MySQL之swap配置MySql
- MySQL面試題,如何書寫 update 避免表鎖?MySql面試題
- 如何避免在Flask中使用Response物件Flask物件
- 開發商業軟體使用MySQL,如何避免購買商業許可證?MySql
- 使用PDO查詢mysql避免SQL隱碼攻擊MySql
- mysql支援gbk(zt)MySql
- MySQL 避免行鎖升級為表鎖——使用高效的索引MySql索引
- redis使用中存在的問題及如何避免(一)Redis
- redis使用中存在的問題及如何避免(二)Redis
- MySql escape如何使用MySql
- 如何避免MYSQL主從延遲帶來的讀寫問題?MySql
- 使用磁碟為Linux新增swapLinux
- mysql避免插入重複資料MySql
- 如何避免VoIP安全風險
- Mysql中使用流式查詢避免資料量過大導致OOMMySqlOOM
- 事務使用中如何避免誤用分散式事務分散式
- mysql replication複製錯誤(zt)MySql
- mysql出錯程式碼表(ZT)MySql
- MySql如何使用索引(二)MySql索引
- MySql如何使用索引(一)MySql索引
- 如何得到Oracle Patch (zt)Oracle
- MySQL針對Swap分割槽的運維注意點MySql運維
- numa 架構下mysql可能遭遇的swap問題架構MySql
- swap空間不足導致mysql被OOM kill案例MySqlOOM
- java如何避免程式死鎖Java
- Flutter中如何避免多次buildFlutterUI
- 如何避免資料庫被黑資料庫
- 如何避免ConcurrentModificationExceptionException
- [譯]如何避免golang的坑Golang
- GOLANG如何避免字串轉義Golang字串
- 如何避免應用安全風險?
- 使用 jQuery 避免滑鼠雙擊jQuery
- PHP 如何安全的使用 MySQL ?PHPMySql
- MySQL鎖:InnoDB行鎖需要避免的坑MySql
- zt-如何分析AWR (1)
- 如何避免空指標出錯?指標
- 美國伺服器如何避免踩雷?伺服器