前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库最大连接数量

数据库最大连接数量

作者头像
大牧莫邪
发布2018-08-27 17:45:25
2K0
发布2018-08-27 17:45:25
举报
文章被收录于专栏:我和PYTHON有个约会

在数据库操作过程中,经常会遇到一些非业务逻辑错误,这样的错误要求开发人员对于自己正在操作的硬件软件乃至网络都有一定的了解,这里说说关于数据库最大连接数量的那点事儿

在某个项目操作过程中,数据库使用MySQL,在进行用户并发访问测试时,当并发量达到一定程度的时候就会出现程序连接数据库1040错误,1040错误的具体描述是:“Can not connect to MySQL server. Too many connections”,也就是过多的数据库连接数量,这个明显就不是业务本身的问题,而是数据库系统配置的问题了。解决这个问题从以下几个方面进行处理

  • 查看当前数据库最大连接数量和最大允许连接数量
  • 修改最大连接数量
1. 查看当前数据库mysql最大连接数量和最大允许连接数量

查看最大连接数量

代码语言:javascript
复制
SHOW VARIABLES LIKE 'max_connections';

mysql最大允许连接数量限制 16384 个

2. 设置mysql数据库最大连接数量

设置最大连接数量有两种方式(命令行修改 | 配置文件修改)

  • 命令行修改最大连接数量
代码语言:javascript
复制
set global max_connections = 1000

优点:即时生效,运行命令之后直接生效 缺点:如果一旦重启mysql数据库服务的话,默认最大连接数量重置

  • 配置文件修改
代码语言:javascript
复制
# 修改mysql的配置文件my.ini
[mysql]
...
max_connections=1000

优点:稳定,可靠,修改完之后永久生效 缺点:修改配置文件的操作方式需要重启mysql数据库服务才能生效

3.常见数据库维护的命令操作
代码语言:javascript
复制
# 查看当前数据库的连接状态
show status like 'Threads%';
# threads_cached:缓存的连接
# threads_connected:建立的连接数量
# threads_created:创建过的线程数量
# threads_running:激活的连接数量

查看当前数据库的连接状态

代码语言:javascript
复制
# 查看当前连接信息,root用户可以查看所有正在连接的信息
show processlist;

查看当前连接信息

代码语言:javascript
复制
# 查看当前数据库运行状态设置
show status;

查看当前数据库运行状态设置

Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。 Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。 Connections 试图连接MySQL服务器的次数。 Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。 Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。 Delayed_writes 用INSERT DELAYED写入的行数。 Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。 Flush_commands 执行FLUSH命令的次数。 Handler_delete 请求从一张表中删除行的次数。 Handler_read_first 请求读入表中第一行的次数。 Handler_read_key 请求数字基于键读行。 Handler_read_next 请求读入基于一个键的一行的次数。 Handler_read_rnd 请求读入基于一个固定位置的一行的次数。 Handler_update 请求更新表中一行的次数。 Handler_write 请求向表中插入一行的次数。 Key_blocks_used 用于关键字缓存的块的数量。 Key_read_requests 请求从缓存读入一个键值的次数。 Key_reads 从磁盘物理读入一个键值的次数。 Key_write_requests 请求将一个关键字块写入缓存次数。 Key_writes 将一个键值块物理写入磁盘的次数。 Max_used_connections 同时使用的连接的最大数目。 Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。 Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。 Open_tables 打开表的数量。 Open_files 打开文件的数量。 Open_streams 打开流的数量(主要用于日志记载) Opened_tables 已经打开的表的数量。 Questions 发往服务器的查询的数量。 Slow_queries 要花超过long_query_time时间的查询数量。 Threads_connected 当前打开的连接的数量。 Threads_running 不在睡眠的线程数量。 Uptime 服务器工作了多少秒。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.12.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 查看当前数据库mysql最大连接数量和最大允许连接数量
  • 2. 设置mysql数据库最大连接数量
  • 3.常见数据库维护的命令操作
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档