《MySQL排错指南》——4.2 操作系统限制

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介:

本节书摘来自异步社区出版社《MySQL排错指南》一书中的第4章,第4.2节,作者:【美】Sveta Smirnova(斯维特 斯米尔诺娃),更多章节内容可以访问云栖社区“异步社区”公众号查看。

4.2 操作系统限制

操作系统在MySQL上会存在其他限制。例如,我曾经见过一个案例,服务器故障是因为Linux主机设置了vm.overcommit_ratio = 50。这个参数指定系统经由malloc()可分配的全部虚拟内存百分比,一个进程尝试分配更多内存时将会失败。50%是许多Linux安装时的默认值。所以mysqld分配现有内存的50%,当它试图分配更多的时候就失败了。在多任务配置中,这个选项有利于防止其他关键进程受MySQL服务器影响,但在专有服务器环境中这个选项显然是很荒谬的。

另外一个重要的UNIX选项是ulimit,它用来限制用户各方面的资源[2]。当使用ulimit命令限制资源或者其他系统工具时,记住MySQL服务器也是运行在一个用户下,这些限制对任何人都生效。

3.9.1节提到了操作系统限制是如何影响open_files_limit变量的,我在这里举例说明一下。假设服务器的ulimit限制打开文件(-n选项)为1024,大多数系统的默认值。如果你试图以--open-files-limit=4096来启动mysqld,它并不会重写操作系统限制。
image

如果你有很多表,那么这个选项就非常重要。如果此值设置过小,那么MySQL服务器就会在打开表和关闭表操作上消耗大量时间,从而拖慢运行速度。如果服务器由于缺少资源不能打开新表,甚至会出现拒绝尝试连接的情况。

因为每个操作系统都有具体的特性,我不再针对系统限制调优进行深入讨论。我没有提到Windows,但请放心,它也有限制。

每当你怀疑操作系统限制了MySQL服务器,请先检查之前提到过的资源:内存、CPU、网络带宽。检查mysqld的资源是否小于硬件提供的。通常,性能问题出现在内存或CPU不够用时。另外,检查允许打开的文件数。

如果你发现mysqld应该并且可以使用更多的资源,检查操作系统优化的各个方面。比如,操作系统内核选项或者默认用户在可用内存量上没有限制,但是在运行mysqld的用户上做了专门限制。当大多数操作系统限制是很大的或者没有设置时,而用户账户的默认值很小,这是种常见的情况。

如果MySQL使用了有限的资源,你有时可能会很奇怪出问题时是由于缺乏资源,还是仅仅是没有用到它们,因为当时负载非常低。当服务器故障时,它要么在错误日志文件中输出消息,要么性能开始急剧下降。另一个迹象是,当你试图增加一个选项时,它并没有变。前面的open_files_limit例子说明了这点。在这种情况下,如果在启动时设置该选项,那么你就会在错误日志文件中找到这些消息,或者你会在动态设置该选项时发现一条警告。检查可疑变量的真实值也是一个好方法。

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
11月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
320 18
|
11月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
310 10
|
关系型数据库 MySQL 数据库
【Mac os系统】安装MySQL数据库
本文详细介绍了在Mac OS系统上安装MySQL数据库的步骤,包括下载、安装、配置环境变量、启动服务、授权设置以及解决常见问题,并提供了一些常用的MySQL命令。
1866 0
【Mac os系统】安装MySQL数据库
|
关系型数据库 MySQL 数据库
龙蜥操作系统上安装MySQL:步骤详解与常见问题解决
龙蜥操作系统上安装MySQL:步骤详解与常见问题解决
1771 0
|
关系型数据库 MySQL 开发工具
【开发工具专题_02】windows操作系统下载与安装mysql8.0.18教程
【开发工具专题_02】windows操作系统下载与安装mysql8.0.18教程
217 0
|
缓存 算法 关系型数据库
面试官:你知道MySQL和Linux操作系统是如何改进LRU算法的吗?
上周群里看到有位小伙伴面试时,被问到这两个问题: 咋一看,以为是在问操作系统的问题,其实这两个题目都是在问如何改进 LRU 算法。 因为传统的 LRU 算法存在这两个问题: 「预读失效」导致缓存命中率下降(对应第一个问题) 「缓存污染」导致缓存命中率下降(对应第二个问题) Redis 的缓存淘汰算法则是通过实现 LFU 算法来避免「缓存污染」而导致缓存命中率下降的问题(Redis 没有预读机制)。 MySQL 和 Linux 操作系统是通过改进 LRU 算法来避免「预读失效和缓存污染」而导致缓存命中率下降的问题。 这次,就重点讲讲 MySQL 和 Linux 操作系统是如何改进 L
|
SQL 关系型数据库 MySQL
Linux操作系统上安装MYSQL总结
Linux操作系统上安装MYSQL总结
270 0
|
7月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
483 158
|
7月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
7月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1163 152

推荐镜像

更多