mysql数据库连接数过多导致系统出错,系统不能连接数据库,关键要看两个数据:
1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。最大是16384。
2、数据库当前的连接线程数threads_connected。这是动态变化的。
查看max_connections、max_connections的办法见后。
如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,如果程序没做太多的错误处理,就会出现类似强坛的报错信息。
因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。
但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。
这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,但强坛系统估计不会发生这种低级的编程错误。
该错误的简便的检查办法是,在刷新强坛页面时,不断监视threads_connected的变化。如果max_connections足够大,而 threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技术, threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。
从强坛出错的情况看,更大的可能性是数据库系统没能进行适当地配置。下面提出一点建议。供参考
让你们的工程师把MySQL的最大允许连接数从默认的100调成32000。这就不会老出现连接过多的问题了。
查看max_connections
进入MySQL,用命令:
show variables
查看数据库最大可连接数的变量值:
max_connections
查看threads_connected
进入MySQL,用命令:
show status
查看当前活动的连接线程变量值:
threads_connected
设置max_connections
设置办法是在my.cnf文件中,添加下面的最后红色的一行:
[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable = key_buffer=16K
set-variable = max_allowed_packet=1M
set-variable = thread_stack=64K
set-variable = table_cache=4
set-variable = sort_buffer=64K
set-variable = net_buffer_length=2K
set-variable = max_connections=32000
修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。
注意:
1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;
2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥;
3、添加了最大允许连接数,对系统消耗增加不大。
4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/longtrue/archive/2009/05/24/4212196.aspx
分享到:
相关推荐
在多线程环境中,MySQL连接数过多的问题是一个常见的性能瓶颈,尤其在高并发的应用场景下。这通常是由于每个线程创建一个独立的数据库连接导致的,当并发线程数量增加时,连接池中的连接数量也随之增加,如果超过...
### 修改MYSQL最大连接数的3种方法 在MySQL数据库服务器中,`max_connections` 参数用于控制同时能够连接到该数据库的最大客户端数量。当一个应用程序或系统需要处理大量并发连接时,调整这一参数变得尤为重要。...
如果连接数设置不当,可能会导致 MySQL 数据库性能下降,甚至崩溃。因此,了解如何修改 MySQL 连接数非常重要。 在 MySQL 数据库中,连接数是通过参数 max_connections 来控制的。max_connections 参数决定了 MySQL...
总结一下,修改MySQL的最大连接数涉及调整`max_connections`和`open_files_limit`配置参数,并可能需要在操作系统层面进行额外的设置。这些调整需要谨慎操作,以免影响系统的稳定性和安全性。同时,定期检查和监控...
最近网站出现 User 数据库名称 has already more than 'max_user_connections' active connections 的报错,网站瘫痪。有必要研究下这个问题。
在CentOS 7环境中,MySQL数据库系统默认的最大连接数可能会受到特定限制,导致即使在配置文件中设置了较高的`max_connections`值,实际可用的最大连接数仍然较低。在本例中,用户试图将`max_connections`从214提升至...
MySQL查看最大连接数和修改最大连接数 1、查看最大连接数 show variables like '%max_connections%'; 2、修改最大连接数 set GLOBAL max_connections = 200; 以下的文章主要是向大家介绍的是MySQL最大连接数的修改...
可以根据应用需求调整连接池的参数,如最大连接数、空闲超时时间等。这些参数可以通过`UseMySql`方法中的`mySqlOptions`进行设置。 7. 性能优化 连接池可以减少创建和关闭连接的开销,提高系统性能。但过多的空闲...
# 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为 8 比特编码的 latin1 字符集 character-set-server=utf8 八、安装 mysql 软件 进入安装 mysql 软件目录: [root@localhost ~]# cd /usr/local/...
- `maxActive`:最大活动连接数。 - `maxIdle`:最大空闲连接数。 - `maxWait`:获取连接的最大等待时间。 - `username` 和 `password`:数据库的登录凭证。 - `driverClassName`:MySQL JDBC驱动类的全名。 - `url`...
MySQL的最大连接数可以通过修改配置文件(通常是`my.cnf`或`my.ini`)来设置。以下是如何设置: ```ini [mysqld] max_connections = 500 ``` 这里的`500`是你希望设置的最大连接数。根据你的服务器资源和需求,这...
# 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为 8 比特编码的 latin1 字符集 character_set_server=utf8 # 创建新表时将使用的默认存储引擎 default_storage_engine=INNODB # 设置最大...
包括连接的初始化、最大连接数设置、空闲连接检测等功能。当连接池中的连接被耗尽时,可能会有新的连接按需创建。 6. **MysqlConnection类**: 表示与MySQL服务器的单个连接,可能是从连接池中获取或创建的。这个...
### MySql连接字符串详解 在开发基于MySql数据库的应用程序时,正确配置数据库连接字符串是非常重要的一步。连接字符串包含了客户端与数据库服务器建立连接所需的各种参数。本文将深入解析一个典型的MySql连接字符...
在文件中设置必要的参数,比如客户端默认字符集、服务器端口、数据存储路径、最大连接数、字符集、默认存储引擎等。这些配置对于MySQL的运行至关重要,确保其性能和稳定性。 安装和初始化MySQL服务器时,可以使用`...
本文将详细介绍在Linux环境下对MySQL进行性能调优的方法,主要聚焦于修改最大连接数、线存缓存数等方面,以减少MySQL服务器的资源消耗并提升其整体性能。 #### 二、理解关键配置参数 在深入讨论具体的优化步骤之前...
Oracle和MySQL作为两个主流的关系数据库管理系统,在连接数限制上有着不同的处理机制和配置方法。本文将探讨Oracle和MySQL在数据库连接数限制上的差异,并提供实际的配置代码示例。 Oracle和MySQL在数据库连接数限制...
- 设置网站的 MySQL 访问量, 如 “Decision Support(DSS)/OLAP(大约 20 个并发连接)”、“Online Transaction Processing(OLTP)(大约 500 个并发连接)” 或 “Manual Setting(手动设置, 自定义输入并发连接数)”。...
- **PoolConfig**:配置参数,如最大连接数、最小连接数、超时时间等。 4. **Java连接池的工作流程** - **初始化**:根据配置参数预先创建一定数量的连接,并将它们添加到连接池中。 - **获取连接**:当应用需要...