MySQL服務器SWAP使用率高導致db很慢很卡
MySQL服務器SWAP使用率高導致db很慢很卡
環境介紹:
CentOS:6.X
MySQL版本:5.5.40
故障原因分析:
物理內存是16G,swap是4G。此時MySQL本身已經占用了14G物理內存,而同時其他應用程序或者系統進程又需要3G內存,這時候操作系統就可能把MySQL所擁有的一部分地址空間映射到swap上去,有可能產生swap的操作事件:
產生的主要原因:
1.mysqldump以及mysql import很大的庫或者表;
2.數據庫層大批量的並發操作的io writer和io read操作;
3.在OS層copy一個大文件,比如上百GB的數據庫備份文件。
通常的解決辦法:
1.釋放SWAP空間
#swapoff -a
然後開啟swapon
#swapon -a
2.添加MySQL的配置參數memlock
這個參數會強迫mysqld進程的地址空間一直被鎖定在物理內存上
設置max locked memory
#echo "mysql hard memlock unlimited ">> /etc/security/limits.conf
#echo "mysql soft memlock unlimited ">> /etc/security/limits.conf
3.修改內核參數
#echo "vm.swappiness=0" >>/etc/sysctl.conf
4.修改my.cnf參數:
修改my.cnf裡面的innodb_flush_method參數,開啟O_DIRECT模式。
5.使用大頁內存。