数据库最大连接数量

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

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

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

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

查看最大连接数量

SHOW VARIABLES LIKE 'max_connections';

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

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

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

  • 命令行修改最大连接数量
set global max_connections = 1000

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

  • 配置文件修改
# 修改mysql的配置文件my.ini
[mysql]
...
max_connections=1000

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

3.常见数据库维护的命令操作

# 查看当前数据库的连接状态
show status like 'Threads%';
# threads_cached:缓存的连接
# threads_connected:建立的连接数量
# threads_created:创建过的线程数量
# threads_running:激活的连接数量

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

# 查看当前连接信息,root用户可以查看所有正在连接的信息
show processlist;

查看当前连接信息

# 查看当前数据库运行状态设置
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 服务器工作了多少秒。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏转载gongluck的CSDN博客

linux平台下的写文件刷新

c语言libc库自带的fflush和linux的sync、fsync、fdatasync,字面上都是刷新缓冲区数据到磁盘(当然,fflush还可以刷新缓冲区数据...

39350
来自专栏云计算教程系列

# 如何在Ubuntu 14.04上使用Bottle Micro Framework部署Python Web应用程序 ##

由于其灵活性和高级功能,Python是一种优秀的Web编程语言。Web框架可以使编程Web应用程序更加简单,因为它们连接了强大的Web界面所需的许多组件。

18510
来自专栏csxiaoyao

mysql 配置总结( linux & macos )

407110
来自专栏JAVA同学会

MongoDB之分片集群(Sharding)

  分片(sharding)是一个通过多台机器分配数据的方法。MongoDB使用分片支持大数据集和高吞吐量的操作。大数据集和高吞吐量的数据库系统挑战着单一服务的...

32320
来自专栏Pythonista

Django之常用命令以及问题汇总

django-admin.py startproject project-name

18310
来自专栏张善友的专栏

SQLite 预写式日志

      SQLite在3.7.0版本引入了WAL (Write-Ahead-Logging),WAL的全称是Write Ahead Logging,它是很多...

24290
来自专栏代码世界

MYSQL之库操作

一、系统数据库 information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等 my...

36170
来自专栏LIN_ZONE

远程连接ubuntu mysql出现2003错误 cant connect to mysql(转载)

2.打开my.cnf文件,找到 bind-address = 127.0.0.1 在前面加上#注释掉,如下: #bind-address = 127.0.0....

24420
来自专栏Laoqi's Linux运维专列

MySQL调优

45590
来自专栏pangguoming

centos6.8 mysql5.6.34 root密码重置

15550

扫码关注云+社区

领取腾讯云代金券