原标题:MySQL服务器最大连接数怎么设置才合理

如果mysql 连接数据设置不合理可能会导致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections错误了,那么要如何才算是合理设置mysql最大连接数呢,下面我来给大家介绍介绍。

MySQL服务器的连接数并不是要达到最大的100%为好,还是要具体问题具体分析,下面就对MySQL服务器最大连接数的合理设置进行了详尽的分析,供您参考。

我们经常会遇见“MySQL: ERROR 1040: Too many connections”的情况,通常,mysql的最大连接数默认是100, 最大可以达到16384。

一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小:

mysql> show variables like 'max_connections';

+-----------------+-------+

| Variable_name | Value |

+-----------------+-------+

| max_connections | 256 |

+-----------------+-------+

这台MySQL服务器最大连接数是256,然后查询一下服务器响应的最大连接数:

mysql> show global status like 'Max_used_connections';

MySQL服务器过去的最大连接数是245,没有达到服务器连接数上限256,应该没有出现1040错误,比较理想的设置是:

Max_used_connections / max_connections * 100% ≈ 85%

最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接上线就设置得过高了

在Windows下常用的有两种方式修改最大连接数。

第一种:命令行修改。

>mysql -uuser -ppassword(命令行登录MySQL)

mysql>show variables like 'max_connections';(查可以看当前的最大连接数)

msyql>set global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功)

mysql>exit(推出)

这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效,一旦mysql重启,又会恢复到初始状态。因为mysql启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。

第二种:修改配置文件。

这 种方式说来很简单,只要修改MySQL配置文件my.ini 或 my.cnf的参数max_connections,将其改为max_connections=1000,然后重启MySQL即可。但是有一点最难的就是my.ini这个文件在哪找。通常有两种可能,一个是在安装目录下(这是比较理想的情况),另一种是在数据文件的目录下,安装的时候如果没有人为改变目录的话,一般就在C:/ProgramData/MySQL往下的目录下。

与连接数相关的几个参数:

在修改最大连接数的时候会有这样一个疑问—这个值是不是越大越好,或者设置为多大才合适?这个参数的大小要综合很多因素来考虑,比如使用的平台所支持的线程库数量(windows只能支持到2048)、服务器的配置(特别是内存大小)、每个连接占用资源(内存和负载)的多少、系统需要的响应时间等。可以在global或session范围内修改这个参数。连接数的增加会带来很多连锁反应,需要在实际中避免由此引发的负面影响。

首先看一下MySQL的状态:

mysql> status;

--------------

mysql Ver 14.14 Distrib 5.5.15, for Win32 (x86)

Connection id: 1

Current database:

Current user: root@localhost

SSL: Not in use

Using delimiter: ;

Server version: 5.5.15 MySQL Community Server (GPL)

Protocol version: 10

Connection: localhost via TCP/IP

Server characterset: utf8

Db characterset: utf8

Client characterset: gbk

Conn. characterset: gbk

TCP port: 3306

Uptime: 1 hour 3 min 27 sec

Threads: 12 Questions: 18 Slow queries: 10 Opens: 33 Flush tables: 5 Open tab

les: 34 Queries per second avg: 6.256

--------------

Open tables:34,即当前数据库打开表的数量是34个,注意这个34并不是实际的34个表,因为MySQL是多线程的系统,几个不同的并发连接可能打开同一个表,这就需要为不同的连接session分配独立的内存空间来存储这些信息以避免冲突。因此连接数的增加会导致MySQL需要的文件描述符数目的增加。另外对于MyISAM表,还会建立一个共享的索引文件描述符。

在MySQL数据库层面,有几个系统参数决定了可同时打开的表的数量和要使用的文件描述符,那就是table_open_cache、max_tmp_tables和open_files_limit。

mysql> show variables like 'table_open%';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| table_open_cache | 256 |

+------------------+-------+

1 row in set (0.00 sec)

table_open_cache:256,这就是说所有的MySQL线程一共能同时打开256个表,我们可以搜集系统的打开表的数量的历史记录和这个参数来对比,决定是否要增加这个参数的大小。查看当前的打开表的数目(Open tables)可用上边提到过的status命令,另外可以直接查询这个系统变量的值:

mysql> show status like 'open_tables';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| Open_tables | 3 |

+---------------+-------+

1 row in set (0.00 sec)

Open_tables就是当前打开表的数目,通过flush tables命令可以关闭当前打开的表。 这个值如果过大,并且如果没有经常的执行flush tables命令,可以考虑增加table_open_cache参数的大小。

接下来看max_tmp_tables:

mysql> show variables like 'max_tmp%';

+----------------+-------+

| Variable_name | Value |

+----------------+-------+

| max_tmp_tables | 32 |

+----------------+-------+

1 row in set (0.00 sec)

max_tmp_tables:32即单个客户端连接能打开的临时表数目。查看当前已打开的临时表的信息:

mysql> show global status like '%tmp%table%';

+-------------------------+-------+

| Variable_name | Value |

+-------------------------+-------+

| Created_tmp_disk_tables | 0 |

| Created_tmp_tables | 11 |

+-------------------------+-------+

2 rows in set (0.00 sec)

根据这两个值可以判断临时表的创建位置,一般选取BLOB和TEXT列、Group by 和 Distinct语句的数据量超过512 bytes,或者union的时候select某列的数据超过512 bytes的时候,就直接在磁盘上创建临时表了,另外内存中的临时表变大的时候,也可能被MySQL自动转移到磁盘上(由tmp_table_size和max_heap_table_size参数决定)。

增加table_open_cache或max_tmp_tables 参数的大小后,从操作系统的角度看,mysqld进程需要使用的文件描述符的个数就要相应的增加,这个是由open_files_limit参数控制的。

mysql> show variables like 'open_files%';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| open_files_limit | 2670 |

+------------------+-------+

1 row in set (0.00 sec)

但是这个参数是OS限制的,所以我们设定的值并不一定总是生效。如果OS限制MySQL不能修改这个值,那么置为0。如果是专用的MySQL服务器上,这个值一般要设置的尽量大,就是设为没有报Too many open files错误的最大值,这样就能一劳永逸了。当操作系统无法分配足够的文件描述符的时候,mysqld进程会在错误日志里记录警告信息。

相应的,有两个状态变量记录了当前和历史的文件打开信息:

mysql> show global status like '%open%file%';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| Open_files | 0 |

| Opened_files | 76 |

+---------------+-------+

2 rows in set (0.00 sec)

MySQL为每个连接分配线程来处理,可以通过threads_connected参数查看当前分配的线程数量:

mysql> show status like '%thread%';

+------------------------------------------+-------+

| Variable_name | Value |

+------------------------------------------+-------+

| Delayed_insert_threads | 0 |

| Performance_schema_thread_classes_lost | 0 |

| Performance_schema_thread_instances_lost | 0 |

| Slow_launch_threads | 0 |

| Threads_cached | 0 |

| Threads_connected | 1 |

| Threads_created | 1 |

| Threads_running | 1 |

+------------------------------------------+-------+

8 rows in set (0.00 sec)

比较threads_connected参数和前面提到的max_connections参数,也可以作为目前的系统负载的参照,决定是否需要修改连接数。

查看每个线程的详细信息:mysql>show processlist;对影响系统运行的线程:kill connection|query threadid的命令杀死。返回搜狐,查看更多

责任编辑:

mysql最大连接数512_MySQL服务器最大连接数怎么设置才合理相关推荐

  1. qt设置mysql最大连接数_MySQL服务器最大连接数的合理设置

    MySQL服务器的连接数并不是要达到最大的100%为好,还是要具体问题具体分析,下面就对MySQL服务器最大连接数的合理设置进行了详尽的分析,供您参考. 我们经常会遇见"MySQL: ERR ...

  2. Mysql 查看连接数,状态 最大并发数 怎么设置才合理

    show status like '%max_connections%'; ##mysql最大连接数 set global max_connections=1000 ##重新设置 show varia ...

  3. mysql最大连接数合理值_MySQL服务器最大连接数的合理设置

    MySQL服务器的连接数并不是要达到最大的100%为好,还是要具体问题具体分析,下面就对MySQL服务器最大连接数的合理设置进行了详尽的分析,供您参考. 我们经常会遇见"MySQL: ERR ...

  4. MySQL中的max_connections和max_user_connections 及 MySQL服务器最大连接数的合理设置

    max_connections 是指整个mysql服务器的最大连接数: max_user_connections 是指每个数据库用户的最大连接数,比如:虚拟主机可以用这个参数控制每个虚拟主机用户的数据 ...

  5. mysql最大连接数合理值_MySQL服务器最大连接数怎么设置才合理[转]

    如果mysql 连接数据设置不合理可能会导致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections错误了,那么要如何才算是合理设置mysql最大连接数 ...

  6. mysql查看历史连接数_MySQL如何查看连接数和连接状态

    MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准 ...

  7. mysql最大连接数查询_MYSQL 查看最大连接数和修改最大连接数

    MySQL查看最大连接数和修改最大连接数 1.查看最大连接数 show variables like '%max_connections%'; 2.修改最大连接数 set GLOBAL max_con ...

  8. 修改服务器连接数,服务器修改连接数

    服务器修改连接数 内容精选 换一换 2020年7月以及之后购买的实例,Kafka服务器允许客户端单IP连接的个数为1000个,在此之前购买的实例,Kafka服务器允许客户端单IP连接的个数为200个, ...

  9. netstat--查看服务器[有效]连接数--统计端口并发数--access.log分析

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

最新文章

  1. 【FLASH BUILDER 4.6 快捷键】只记几个对自己有帮助的
  2. ServletContext_功能_域对象
  3. 2018世界杯8组32队积分和净胜球
  4. java 进度条_进度条Java
  5. 路由器链路聚合技术(Eth-Trunk、Ip-Trunk)
  6. 性能分析工具Linux perf使用经验
  7. 数字信号处理实验(五)—— 心电信号处理 IIR FIR滤波综合题(上篇)
  8. 《敏捷个人》周刊 第13期 (可下载)
  9. OFDM载波间隔_OFDM之频域
  10. 引爆点 mobi_开源中的3个新兴引爆点
  11. VirtualBox虚拟机全屏显示
  12. 我的MBTI 职业性格分析报告——ISFP型
  13. Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!...
  14. java测试复盘2(2019.8.21)
  15. 我的数据可视化之旅:从天文学家到数据可视化专家养成记
  16. 通过opencv实现将图片转换为视频
  17. 《成为沃伦·巴菲特》笔记与感想
  18. html select不允许选择,设置select下拉框不能选择
  19. stm32h743能跑linux吗,关于stm32H743 can配置
  20. 计算机在无纸化办公系统中应用属于,0506非计算机专业和计算机专业基础部分会考练习题.doc...

热门文章

  1. IOC和DI的区别详解
  2. Android绘制(三):Path结合属性动画, 让图标动起来!
  3. 虚拟主机用户ftp和apache用户文件互操作权限解决方法
  4. boot.oat FC问题分析报告
  5. 初学React,setState后获取到的thisstate没变,还是初始state?
  6. Linux基础之文件权限详解
  7. Struts2 文件上传,下载,删除
  8. WPF--ComboBox数据绑定
  9. C++的高效从何而来
  10. [转]extern使用方法总结