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

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

At time: Wed Dec  7 09:15:01 CST 2016 :MySQL error stop .
At time: Wed Dec  7 09:30:01 CST 2016 :MySQL error stop .
At time: Wed Dec  7 10:00:02 CST 2016 :MySQL error stop .
At time: Mon Dec 19 04:30:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 04:45:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 05:00:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 05:15:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 05:30:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 05:45:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 06:00:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 06:15:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 06:30:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 06:45:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 07:00:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 07:15:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 07:30:02 CST 2016 :MySQL error stop .
At time: Mon Dec 19 07:45:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 08:00:02 CST 2016 :MySQL error stop .
At time: Mon Dec 19 08:15:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 08:30:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 08:45:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 09:00:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 09:15:02 CST 2016 :MySQL error stop .
At time: Mon Dec 19 09:30:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 09:45:01 CST 2016 :MySQL error stop .
At time: Mon Dec 19 10:00:01 CST 2016 :MySQL error stop .
At time: Tue Dec 20 23:15:02 CST 2016 :MySQL error stop .
At time: Tue Dec 20 23:30:01 CST 2016 :MySQL error stop .
At time: Tue Dec 20 23:45:01 CST 2016 :MySQL error stop .
At time: Thu Dec 22 11:56:04 CST 2016 :MySQL error stop .
At time: Thu Dec 22 21:26:14 CST 2016 :MySQL error stop .
At time: Thu Dec 22 21:56:12 CST 2016 :MySQL error stop .
At time: Sat Dec 24 12:02:17 CST 2016 :MySQL error stop .
At time: Sat Dec 24 12:08:01 CST 2016 :MySQL error stop .
At time: Sat Dec 24 12:10:01 CST 2016 :MySQL error stop .

而查看MYSQL错误日志,有提示:

[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-12-14 08:52:40

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

【mysql】关于IO/内存方面的一些优化

这里使用的是mysql  Ver 14.14 Distrib 5.6.19, for Linux (i686) using  EditLine wrapper 一.mysql目录文件 ibdata1:系统表空间 包含数据字典.回滚日志/undolog等 (insert buffer segment/double write segment/rollback segment/index segment/dictionary segment/undo segment) ib_logfile0/ib_

从内存中加载DLL DELPHI版

//从内存中加载DLL DELPHI版 unit MemLibrary; interface uses Windows; function memLoadLibrary(pLib: Pointer): DWord; function memGetProcAddress(dwLibHandle: DWord; pFunctionName: PChar): Pointer; stdcall; function memFreeLibrary(dwHandle: DWord): Boolean; imp

从内存中加载DLL Delphi版(转)

源:从内存中加载DLL DELPHI版 原文 : http://www.2ccc.com/article.asp?articleid=5784 MemLibrary.pas //从内存中加载DLL DELPHI版 unit MemLibrary; interface uses Windows; function memLoadLibrary(pLib: Pointer): DWord; function memGetProcAddress(dwLibHandle: DWord; pFunctio

Linux内存 mem 和 swap

摘抄并用于自查 Linux mem/swap/buffers/cached区别 free命令相对于top,提供了更简洁的查看系统内存使用情况: # free -m mem:表示物理内存统计 buff/cache:表示物理内存的缓存统计 swap:表示硬盘上交换分区的使用情况 系统当前真正可用的内存并不是第一行 free 标记的,他仅代表未被分配的内存 buff/cache列占用过高 buff/cache主要干啥来的? Linux具有先进的缓存机制,会针对dentry(用于VFS-虚拟文件系统,加

【转】由浅入深探究mysql索引结构原理、性能分析与优化

摘要: 第一部分:基础知识 第二部分:MYISAM和INNODB索引结构 1.简单介绍B-tree B+ tree树 2.MyisAM索引结构 3.Annode索引结构 4.MyisAM索引与InnoDB索引相比较 第三部分:MYSQL优化 1.表数据类型选择 2.sql语句优化 (1)     最左前缀原则 (1.1)  能正确的利用索引 (1.2)  不能正确的利用索引 (1.3)  如果一个查询where子句中确实不需要password列,那就用“补洞”. (1.4)  like (2)

一:MySQL数据库的性能的影响分析及其优化

MySQL数据库的性能的影响分析及其优化 MySQL数据库的性能的影响 一. 服务器的硬件的限制 二. 服务器所使用的操作系统 三. 服务器的所配置的参数设置不同 四. 数据库存储引擎的选择 五. 数据库的参数配置的不同 六. (重点)数据库的结构的设计和SQL语句 1). 服务器的配置和设置(cpu和可用的内存的大小) 1.网络和I/O资源 2.cpu的主频和核心的数量的选择 (对于密集型的应用应该优先考虑主频高的cpu) (对于并发量大的应用优先考虑的多核的cpu) 3.磁盘的配置和选择 (

MySQL影响性能的因素原因以及性能优化配置详解

(https://blog.csdn.net/kangshuo2471781030/article/details/79315577) 一.MySQL性能优化之-影响性能的因素 1.商业需求的影响 不合理需求造成资源投入产出比过低,这里我们就用一个看上去很简单的功能来分析一下. 需求:一个论坛帖子总量的统计,附加要求:实时更新 从功能上来看非常容易实现,执行一条SELECT COUNT(*) from 表名的Query 就可以得到结果.但是,如果我们采用不是MyISAM 存储引擎,而是使用的In

网络图片加载优化

网络图片加载优化 比如使用淘宝浏览产品的时候(大部分应用也是如此),就会发现每次下拉产品目录进行更新的时候,都会出现对应的Item的时候,才开始从网络下载并加载图片. taobao加载 可以看到宝贝图片下拉刷新的时候,图片加载是实时从网络下载的.即使在Wifi的网络环境下,加载图片也是有比较大的延迟. 假设我们浏览每屏宝贝需要2s的时间(人眼对于淘宝搜索的宝贝其实过滤速度非常快).如果每一屏页面需要1s才可以完全加载完图片,则如果浏览10屏的宝贝,就会需要30s.如果加载图片几乎不需要时间,则只

关于android 图片加载优化

android应用对图片处理算是比较频繁的了,尤其是在程序加载大量图片和高分辨率图片时,最容易产生oom异常,下面是个人平时一些省内存加载方法 方法一: public Bitmap decodeFile(String filePath) { Bitmap bitmap = null; BitmapFactory.Options options = new BitmapFactory.Options(); options.inPurgeable = true; try { BitmapFactor