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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

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


[plain] view plain copy 在CODE上查看代码片 派生到我的代码片
  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 在CODE上查看代码片 派生到我的代码片
  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
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
关系型数据库 MySQL Linux
MySQL原理简介—6.简单的生产优化案例
本文介绍了数据库和存储系统的几个主题: 1. **MySQL日志的顺序写和数据文件的随机读指标**:解释了磁盘随机读和顺序写的原理及对数据库性能的影响。 2. **Linux存储系统软件层原理及IO调度优化原理**:解析了Linux存储系统的分层架构,包括VFS、Page Cache、IO调度等,并推荐使用deadline算法优化IO调度。 3. **数据库服务器使用的RAID存储架构**:介绍了RAID技术的基本概念及其如何通过多磁盘阵列提高存储容量和数据冗余性。 4. **数据库Too many connections故障定位**:分析了MySQL连接数限制问题的原因及解决方法。
|
12天前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(07) 她气鼓鼓递来一条SQL | 怎么看执行计划、SQL怎么优化?
在日常研发工作当中,系统性能优化,从大的方面来看主要涉及基础平台优化、业务系统性能优化、数据库优化。面对数据库优化,除了DBA在集群性能、服务器调优需要投入精力,我们研发需要负责业务SQL执行优化。当业务数据量达到一定规模后,SQL执行效率可能就会出现瓶颈,影响系统业务响应。掌握如何判断SQL执行慢、以及如何分析SQL执行计划、优化SQL的技能,在工作中解决SQL性能问题显得非常关键。
|
6天前
|
缓存 算法 关系型数据库
MySQL底层概述—1.InnoDB内存结构
本文介绍了InnoDB引擎的关键组件和机制,包括引擎架构、Buffer Pool、Page管理机制、Change Buffer、Log Buffer及Adaptive Hash Index。
155 97
MySQL底层概述—1.InnoDB内存结构
|
4天前
|
缓存 算法 关系型数据库
MySQL底层概述—8.JOIN排序索引优化
本文主要介绍了MySQL中几种关键的优化技术和概念,包括Join算法原理、IN和EXISTS函数的使用场景、索引排序与额外排序(Using filesort)的区别及优化方法、以及单表和多表查询的索引优化策略。
MySQL底层概述—8.JOIN排序索引优化
|
5天前
|
SQL 关系型数据库 MySQL
MySQL底层概述—7.优化原则及慢查询
本文主要介绍了:Explain概述、Explain详解、索引优化数据准备、索引优化原则详解、慢查询设置与测试、慢查询SQL优化思路
MySQL底层概述—7.优化原则及慢查询
|
6天前
|
存储 缓存 关系型数据库
MySQL底层概述—5.InnoDB参数优化
本文介绍了MySQL数据库中与内存、日志和IO线程相关的参数优化,旨在提升数据库性能。主要内容包括: 1. 内存相关参数优化:缓冲池内存大小配置、配置多个Buffer Pool实例、Chunk大小配置、InnoDB缓存性能评估、Page管理相关参数、Change Buffer相关参数优化。 2. 日志相关参数优化:日志缓冲区配置、日志文件参数优化。 3. IO线程相关参数优化: 查询缓存参数、脏页刷盘参数、LRU链表参数、脏页刷盘相关参数。
MySQL底层概述—5.InnoDB参数优化
|
8天前
|
关系型数据库 MySQL 数据库
从MySQL优化到脑力健康:技术人与效率的双重提升
聊到效率这个事,大家应该都挺有感触的吧。 不管是技术优化还是个人状态调整,怎么能更快、更省力地完成事情,都是我们每天要琢磨的事。
56 23
|
7天前
|
SQL 关系型数据库 MySQL
MySQL原理简介—11.优化案例介绍
本文介绍了四个SQL性能优化案例,涵盖不同场景下的问题分析与解决方案: 1. 禁止或改写SQL避免自动半连接优化。 2. 指定索引避免按聚簇索引全表扫描大表。 3. 按聚簇索引扫描小表减少回表次数。 4. 避免产生长事务长时间执行。
|
24天前
|
监控 关系型数据库 MySQL
Aurora MySQL负载突增应对策略与优化方案
通过以上策略,企业可以有效应对 Aurora MySQL 的负载突增,确保数据库在高负载情况下依然保持高性能和稳定性。这些优化方案涵盖了从架构设计到具体配置和监控的各个方面,能够全面提升数据库的响应速度和处理能力。在实际应用中,应根据具体的业务需求和负载特征,灵活调整和应用这些优化策略。
51 22
|
29天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
247 0

推荐镜像

更多