MYSQL经常挂,怀疑内存不够,加SWAP优化

如题,最近http://www.12reads.cn/MySQL经常挂,最近挂的LOG:


[plain] view plain copy MYSQL经常挂,怀疑内存不够,加SWAP优化MYSQL经常挂,怀疑内存不够,加SWAP优化
  1. At time: Wed Dec  7 09:15:01 CST 2016 :MySQL error stop .  
  2. At time: Wed Dec  7 09:30:01 CST 2016 :MySQL error stop .  
  3. At time: Wed Dec  7 10:00:02 CST 2016 :MySQL error stop .  
  4. At time: Mon Dec 19 04:30:01 CST 2016 :MySQL error stop .  
  5. At time: Mon Dec 19 04:45:01 CST 2016 :MySQL error stop .  
  6. At time: Mon Dec 19 05:00:01 CST 2016 :MySQL error stop .  
  7. At time: Mon Dec 19 05:15:01 CST 2016 :MySQL error stop .  
  8. At time: Mon Dec 19 05:30:01 CST 2016 :MySQL error stop .  
  9. At time: Mon Dec 19 05:45:01 CST 2016 :MySQL error stop .  
  10. At time: Mon Dec 19 06:00:01 CST 2016 :MySQL error stop .  
  11. At time: Mon Dec 19 06:15:01 CST 2016 :MySQL error stop .  
  12. At time: Mon Dec 19 06:30:01 CST 2016 :MySQL error stop .  
  13. At time: Mon Dec 19 06:45:01 CST 2016 :MySQL error stop .  
  14. At time: Mon Dec 19 07:00:01 CST 2016 :MySQL error stop .  
  15. At time: Mon Dec 19 07:15:01 CST 2016 :MySQL error stop .  
  16. At time: Mon Dec 19 07:30:02 CST 2016 :MySQL error stop .  
  17. At time: Mon Dec 19 07:45:01 CST 2016 :MySQL error stop .  
  18. At time: Mon Dec 19 08:00:02 CST 2016 :MySQL error stop .  
  19. At time: Mon Dec 19 08:15:01 CST 2016 :MySQL error stop .  
  20. At time: Mon Dec 19 08:30:01 CST 2016 :MySQL error stop .  
  21. At time: Mon Dec 19 08:45:01 CST 2016 :MySQL error stop .  
  22. At time: Mon Dec 19 09:00:01 CST 2016 :MySQL error stop .  
  23. At time: Mon Dec 19 09:15:02 CST 2016 :MySQL error stop .  
  24. At time: Mon Dec 19 09:30:01 CST 2016 :MySQL error stop .  
  25. At time: Mon Dec 19 09:45:01 CST 2016 :MySQL error stop .  
  26. At time: Mon Dec 19 10:00:01 CST 2016 :MySQL error stop .  
  27. At time: Tue Dec 20 23:15:02 CST 2016 :MySQL error stop .  
  28. At time: Tue Dec 20 23:30:01 CST 2016 :MySQL error stop .  
  29. At time: Tue Dec 20 23:45:01 CST 2016 :MySQL error stop .  
  30. At time: Thu Dec 22 11:56:04 CST 2016 :MySQL error stop .  
  31. At time: Thu Dec 22 21:26:14 CST 2016 :MySQL error stop .  
  32. At time: Thu Dec 22 21:56:12 CST 2016 :MySQL error stop .  
  33. At time: Sat Dec 24 12:02:17 CST 2016 :MySQL error stop .  
  34. At time: Sat Dec 24 12:08:01 CST 2016 :MySQL error stop .  
  35. At time: Sat Dec 24 12:10:01 CST 2016 :MySQL error stop .  

而查看MYSQL错误日志,有提示:
[plain] view plain copy MYSQL经常挂,怀疑内存不够,加SWAP优化MYSQL经常挂,怀疑内存不够,加SWAP优化
  1. [ERROR] InnoDB: Unable to lock /usr/local/mysql/var/ibdata1, error: 11  


error 11在mysql中是资源临时不可用。


找了一堆原因未果,最好想是不是内存瓶颈了?


查看了下服务器一直没开房SWAP,所以打开了下了,观察看看是不是情况有所改变。


以下是开启SWAP的具体步骤:(http://www.12reads.cn/目前2G内存,所以我选择了bs=1m,count=2048,也就是分配2G给SWAP来用。)


1、创建用于交换分区的文件:


  1. dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block

:block_size、number_of_block 大小可以自定义,比如 bs=1M count=1024 代表设置 1G 大小 SWAP 分区。

2、设置交换分区文件:


  1. mkswap /mnt/swap

MYSQL经常挂,怀疑内存不够,加SWAP优化

3、立即启用交换分区文件


  1. swapon /mnt/swap

MYSQL经常挂,怀疑内存不够,加SWAP优化

:如果在 /etc/rc.local 中有 swapoff -a 需要修改为 swapon -a 

 MYSQL经常挂,怀疑内存不够,加SWAP优化

4、设置开机时自启用 SWAP 分区:

需要修改文件 /etc/fstab 中的 SWAP 行,添加


  1. /mnt/swap swap swap defaults 0 0

MYSQL经常挂,怀疑内存不够,加SWAP优化

:/mnt/swap 路径可以修改,可以根据创建的 SWAP 文件具体路径来配置。

5、修改 swpapiness 参数

Linux 系统中,可以通过查看 /proc/sys/vm/swappiness 内容的值来确定系统对 SWAP 分区的使用原则。当 swappiness 内容的值为 0 时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用 SWAP 分区。当 swappiness 内容的值为 100 时,表示积极地使用 SWAP 分区,并且把内存中的数据及时地置换到 SWAP 分区。

查看修改前为 0,需要在物理内存使用完毕后才会使用 SWAP 分区:

MYSQL经常挂,怀疑内存不够,加SWAP优化

可以使用下述方法临时修改此参数,假设我们配置为空闲内存少于 10% 时才使用 SWAP 分区:


  1. echo 10 >/proc/sys/vm/swappiness

MYSQL经常挂,怀疑内存不够,加SWAP优化

若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf 文件,并增加以下内容:  


  1. # vim /etc/sysctl.conf
  2. vm.swappiness=10
  3. # sysctl -p

关闭 SWAP

当系统出现内存不足时,开启 SWAP 可能会因频繁换页操作,导致 IO 性能下降。如果要关闭 SWAP,可以采用如下方法。

1、free -m 查询 SWAP 分区设置:

MYSQL经常挂,怀疑内存不够,加SWAP优化

2、使用命令 swapoff 关闭 SWAP,比如:


  1. swapoff /mnt/swap

MYSQL经常挂,怀疑内存不够,加SWAP优化

3、修改 /etc/fstab 文件,删除或注释相关配置,取消 SWAP 的自动挂载:

MYSQL经常挂,怀疑内存不够,加SWAP优化

4、  通过 free -m  确认 SWAP 已经关闭。

MYSQL经常挂,怀疑内存不够,加SWAP优化

5、 swappiness 参数调整:

可以使用下述方法临时修改此参数,这里配置为 0%:


  1. echo 0 >/proc/sys/vm/swappiness

若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf 文件,并增加以下内容:


  1. # vim /etc/sysctl.conf
  2. vm.swappiness=0
  3. # sysctl -p
上一篇:[学习]Apache 虚拟域名配置


下一篇:Forrester Wave: 混合云管理厂商评测