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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

本节书摘来自异步社区出版社《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 MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
关系型数据库 MySQL 数据库
【Mac os系统】安装MySQL数据库
本文详细介绍了在Mac OS系统上安装MySQL数据库的步骤,包括下载、安装、配置环境变量、启动服务、授权设置以及解决常见问题,并提供了一些常用的MySQL命令。
285 0
【Mac os系统】安装MySQL数据库
|
7月前
|
关系型数据库 MySQL 数据库
龙蜥操作系统上安装MySQL:步骤详解与常见问题解决
龙蜥操作系统上安装MySQL:步骤详解与常见问题解决
724 0
|
7月前
|
关系型数据库 MySQL 开发工具
【开发工具专题_02】windows操作系统下载与安装mysql8.0.18教程
【开发工具专题_02】windows操作系统下载与安装mysql8.0.18教程
78 0
|
缓存 算法 关系型数据库
面试官:你知道MySQL和Linux操作系统是如何改进LRU算法的吗?
上周群里看到有位小伙伴面试时,被问到这两个问题: 咋一看,以为是在问操作系统的问题,其实这两个题目都是在问如何改进 LRU 算法。 因为传统的 LRU 算法存在这两个问题: 「预读失效」导致缓存命中率下降(对应第一个问题) 「缓存污染」导致缓存命中率下降(对应第二个问题) Redis 的缓存淘汰算法则是通过实现 LFU 算法来避免「缓存污染」而导致缓存命中率下降的问题(Redis 没有预读机制)。 MySQL 和 Linux 操作系统是通过改进 LRU 算法来避免「预读失效和缓存污染」而导致缓存命中率下降的问题。 这次,就重点讲讲 MySQL 和 Linux 操作系统是如何改进 L
|
SQL 关系型数据库 MySQL
Linux操作系统上安装MYSQL总结
Linux操作系统上安装MYSQL总结
120 0
|
安全 网络协议 关系型数据库
linux阿里云服务器centos8操作系统安装mysql8.0详细教程
linux阿里云服务器centos8操作系统安装mysql8.0详细教程
1098 0
|
关系型数据库 MySQL 测试技术
MySQL 排错-解决MySQL非聚合列未包含在GROUP BY子句报错问题
MySQL 排错-解决MySQL非聚合列未包含在GROUP BY子句报错问题
214 0
|
SQL 安全 关系型数据库
Windows操作系统安装MySQL解压版
Windows操作系统安装MySQL解压版
144 0
|
1月前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
59 0
Vanilla OS:下一代安全 Linux 发行版
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
64 4