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

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

[plain] view plain copy

  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

  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

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


  1. swapon /mnt/swap

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

 

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

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


  1. /mnt/swap swap swap defaults 0 0

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

5、修改 swpapiness 参数

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

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

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


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

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


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

关闭 SWAP

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

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

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


  1. swapoff /mnt/swap

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

4、  通过 free -m  确认 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
时间: 2024-10-02 04:30:03

MYSQL经常挂,怀疑内存不够,加SWAP优化的相关文章

MySQL应用技巧之内存使用线程独享

在这里我们将介绍的是MySQL内存使用上的线程独享,线程独享内存主要用于各客户端连接线程存储各种操作的独享数据,如线程栈信息,分组排序操作,数据读写缓冲,结果集暂存等等,而且大多数可以通过相关参数来控制内存的使用量. 对于任何一个数据库管理系统来说,内存的分配使用绝对可以算的上是其核心之一了,所以很多希望更为深入了解某数据库管理系统的人,都会希望一窥究竟,我也不例外. 从内存的使用方式MySQL 数据库的内存使用主要分为以下两类 线程独享内存 全局共享内存 今天这篇文章暂时先分析 MySQL 中

电脑原本2G内存,加了张2G的内存条,显示为安装内存4G(可用2G),怎么办啊,好像没起作用

问题描述 电脑原本2G内存,加了张2G的内存条,显示为安装内存4G(可用2G),怎么办啊,好像没起作用 我的电脑是三星SensR530,操作系统是Win7简易版,32位 解决方案 Win7**简易版**,32位,是否入门版的?似乎只支持2GB的...家庭基本版本以上的可以支持到最大4GB 解决方案二: 32位系统是可以识别4G内存的, 你看看是不是你的其他硬件把内存占了,比如显卡什么的(个人觉得很有可能) 或者再看看是不是加装的内存条型号不匹配,以至于不能使用(刚百度了一下,看到你这个型号的电脑

MySQL · 源码分析 · 内存分配机制

前言 内存资源由操作系统管理,分配与回收操作可能会执行系统调用(以 malloc 算法为例,较大的内存空间分配接口是 mmap, 而较小的空间 free 之后并不归还给操作系统 ),频繁的系统调用必然会降低系统性能,但是可以最大限度的把使用完毕的内存让给其它进程使用,相反长时间占有内存资源可以减少系统调用次数,但是内存资源不足会导致操作系统频繁换页,降低服务器的整体性能. 数据库是使用内存的"大户",合理的内存分配机制就尤为重要,上一期月报介绍了 PostgreSQL 的内存上下文,本

解析mysql 缓存如何使用内存_Mysql

先说明2点开启缓存也会带来开销,主要表现在一下方面读取在查询开始之前必须要检查缓存如果查询是缓存的,但是不在结果集中,那么产生结果后保存数据会带来一定的开销向缓存写如数据也会带来开销 有的情况查询缓存不会被缓存,即使你使用 SQL_CACHE也不能缓存主要一下几个引用了用户自定义函数引用了用户自定义变量以用了存续过程查询中包含一些实时的系统函数,比如now引用了临时表 虽然上面说到缓存会带来一些开销但是缓存对mysql  还是很重要带来的好处比坏处多 下面讲一下mysql缓存如何使用内存查询缓存

android的BitmapFactory.Options使用及内存溢出OOM的优化方法

android中BitmapFactory.Options的使用是在加载图片时,就从图片的加载和使用说起 怎样获取图片的大小?首先我们把这个图片转成Bitmap,然后再利用Bitmap的getWidth()和getHeight()方法就可以取到图片的宽高了.新问题又来了,在通过BitmapFactory.decodeFile(String path)方法将突破转成Bitmap时,遇到大一些的图片,我们经常会遇到OOM(Out Of Memory)的问题.怎么避免它呢?这就用到了我们上面提到的Bi

MySQL 5.7下InnoDB对COUNT(*)的优化

0.导读 饱受诟病的InnoDB表COUNT(*)性能问题在5.7下做了优化,果真如此吗? 1.经典需求:InnoDB表COUNT(*) InnoDB引擎表经常被抱怨执行COUNT(*)的效率太差,因此此类需求通常会被建议用其他方法来满足,比如另外加一个计数器表,或者用SHOW TABLE STATUS查看大概数量. 不过,从MySQL 5.7.2起,这个问题得到了解决,我们来看看. 2.MySQL 5.7版本InnoDB对COUNT(*)的优化 MySQL每发布一个新版本,都会放出相应的Rel

MySQL 5.7增强版Semisync Replication性能优化

  这篇文章主要介绍了MySQL 5.7增强版Semisync Replication性能优化,本文着重讲解支持发送binlog和接受ack的异步化.支持在事务commit前等待ACK两项内容,需要的朋友可以参考下 一 前言 前文 介绍了5.5/5.6 版本的MySQL semi sync 基础原理和配置,随着MySQL 5.7 的发布,新版本的MySQL修复了semi sync 的一些bug 并且增强了功能. 支持发送binlog和接受ack的异步化; 支持在事务commit前等待ACK; 在

js资源加载优化

互联网应用或者访问量大的应用,对js的加载优化是不可少的.下面记录几种优化方法 CDN  + 浏览器缓存 CDN(content delivery network)内容分发网络, 最传统的优化方式.其实就是将自己页面所依赖的js(静态的)放置到CDN上,或者使用一些CDN库,以此降低对应用服务器的请求,而浏览器缓存也是不重复加载js文件的性质. 优点: 1.简单.容易维护 2.304 cache 简单来说就是转掉请求,缓存不重加载. 缺点: 1.缓存会失效,当用户强制刷新时会有请求 2.无法增量

android优化-android APP 内存与速度的优化问题。。。

问题描述 android APP 内存与速度的优化问题... android APP 内存与速度的优化问题... 我最近写了一个APP 一开就用了很多资源...请问怎么来优化内存,速度... 大家可以谈谈从代码,或者风格,框架方面谈谈... 解决方案 性能优化 Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航.由此,它必须是高效的.电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了.由于续航对用户的重要性,当电量耗损陡增时,意味这用户迟早会发现是由于