百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

MySQL连接数管理

wptr33 2024-11-24 22:28 41 浏览

前言:

MySQL 连接状态是数据库中比较重要的一个指标,比如说目前总共有多少个连接、各连接处于什么状态等等,这些连接状态也能从侧面反映出数据库当前运行状况。本篇文章我们一起来学习下 MySQL 连接相关内容。

1.connection相关参数

先来看下 connection 相关参数,只有参数设置合理了,数据库才能跑得更好。

  • max_connections:最大连接数,默认为 151 ,可动态修改。
  • max_connect_errors:当同一个客户端连接出错的次数达到 max_connect_errors 时,服务器将阻止该主机进行再次连接。默认为 100 ,可动态修改。
  • max_user_connections:对于单个数据库用户允许的最大同时连接数。默认为 0 ,即表示无限制,可动态修改。
  • connect_timeout:等待一个连接响应的时间,默认为 10s ,在获取连接阶段起作用,可动态修改。

以 max_connections 参数为例,来看下具体参数如何查看及修改:

# 查看相关参数
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+

# 修改参数 (my.cnf配置文件中也要修改)
mysql> set global max_connections = 500;
Query OK, 0 rows affected (0.79 sec)

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 500   |
+-----------------+-------+

2.几个常见连接错误

若 connection 相关参数设置不当,到达一定瓶颈时可能会出现连接错误的问题,下面列举下几种常见的连接错误及解决方法。

出现频繁最高的可能就是 Too many connections 错误了,这个错误发生的原因是当前数据库的总连接数已经达到了 max_connections 数值,当再有客户端尝试连接时及会报此错误。 MySQL 实际上允许 max_connections + 1 个客户端连接,额外一个连接供具有 SUPER 特权的用户使用。当发生 Too many connections 错误时,我看可以用 root 账号登录数据库,然后增大 max_connections 参数即可。其实设置适当的 max_connections 即可避免此类错误再次发生,默认的 151 显然有点小,我们可以监控下数据库连接总数,根据不同环境做出调整,比如设为 500 或 1000,当然也不能设置过大。

若出现 Host is blocked because of many connection errors 错误时,那就是某台主机连接错误达到 max_connect_errors 参数规定的上限了。解决这个错误有两种方案,一个是进入 MySQL 命令行执行 flush hosts 命令来刷新 host ,一个是增大 max_connect_errors 参数值。个人建议可以将 max_connect_errors 参数调大些,比如 1000 或 2000 。

对于 max_user_connections 参数,一般采用默认 0 值即可,若想要限制单个用户的最大连接数,也可以设置下此参数,比如 max_user_connections = 100 代表单个用户最多同时发起 100 个连接。

如果客户端经常遇到 Lost connection to MySQL server at 'XXX' 错误,那就要考虑增大 connect_timeout 值了,默认值 10s 对于网络良好的情况下是够用的,如果客户端和服务端网络有延迟的情况,可以将 connect_timeout 参数调大来避免发生连接超时的错误。

总结:

本篇文章介绍了 MySQL connection 相关内容,要记住一个稳定的数据库,连接总数一般是相对稳定的,若数据库连接状态波动很大,那要排查下是不是程序端或数据库端有做过变更。

相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China's top diplomat to chair third China-Pacific Island countries foreign ministers' meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...