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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 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
目录
相关文章
|
8天前
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
61 9
|
1月前
|
存储 算法 Java
Java内存管理深度剖析与优化策略####
本文深入探讨了Java虚拟机(JVM)的内存管理机制,重点分析了堆内存的分配策略、垃圾回收算法以及如何通过调优提升应用性能。通过案例驱动的方式,揭示了常见内存泄漏的根源与解决策略,旨在为开发者提供实用的内存管理技巧,确保应用程序既高效又稳定地运行。 ####
|
12天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
52 18
|
27天前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
67 31
|
11天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
18 7
|
10天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化与慢查询优化:原理与实践
通过本文的介绍,希望您能够深入理解MySQL索引优化与慢查询优化的原理和实践方法,并在实际项目中灵活运用这些技术,提升数据库的整体性能。
40 5
|
24天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
63 7
|
24天前
|
存储 算法 Java
Java 内存管理与优化:掌控堆与栈,雕琢高效代码
Java内存管理与优化是提升程序性能的关键。掌握堆与栈的运作机制,学习如何有效管理内存资源,雕琢出更加高效的代码,是每个Java开发者必备的技能。
49 5
|
25天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
56 1
|
1月前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
31 2

推荐镜像

更多