`

数据库连接过多的错误,可能的原因分析及解决办法

    博客分类:
  • SQL
 
阅读更多
系统不能连接数据库,关键要看两个数据:
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作配置文件,设置类似,但设置的格式要稍作变通。
分享到:
评论

相关推荐

    解决mysql数据库连接过多的错误

    总之,解决“MySQL数据库连接过多的错误”涉及监控连接状态、调整配置参数、优化连接管理和代码审查。通过以上方法,可以有效提高数据库系统的并发能力,确保其稳定运行,避免因连接数过多而导致的服务中断。在日常...

    多线程下mysql连接数过多解决demo

    这通常是由于每个线程创建一个独立的数据库连接导致的,当并发线程数量增加时,连接池中的连接数量也随之增加,如果超过服务器允许的最大连接数,就可能导致应用程序无法正常工作,甚至引发“Too many connections”...

    java写的数据库连接池

    通过阅读和分析这些代码,初学者可以了解数据库连接池的基本结构和实现细节,同时学习如何使用JDBC API进行数据库操作。 总结来说,数据库连接池是提高Java应用程序数据库访问效率的重要工具。通过自定义连接池,...

    数据库连接池代码实现

    这样不仅能减少数据库连接的创建和销毁开销,还能避免过多的并发连接导致数据库服务器资源耗尽。 在本文中,我们将探讨如何实现一个简单的数据库连接池。首先,我们需要理解几个关键概念: 1. **连接池初始化**:...

    com组件的数据库连接文件

    1. 数据库连接类:用于建立和断开与ACCESS数据库的连接,可能有一个成员函数`Open(const char* dbPath)`用于指定数据库路径并打开连接,以及`Close()`函数用于关闭连接。 2. 查询执行类:提供了执行SQL语句的功能,...

    应用ASP+ADO访问iFix数据库中的异常错误的分析与解决方法.rar

    6. 资源耗尽:长时间运行的查询或过多的数据库连接可能导致资源耗尽,如内存不足或连接池溢出。优化查询性能,及时关闭不再使用的连接,以及适当配置数据库连接池大小可有效避免此类问题。 在分析和解决问题时,...

    Python技术数据库连接常见问题解决方法.docx

    3. **连接池问题**:连接池管理不当可能导致连接过多或过少。配置合适的最大连接数和最小连接数,以适应应用的需求。例如,使用`DBUtils`库创建连接池时,可以通过`maxconnections`和`mincached`参数进行调整。 4. ...

    设置数据库的连接上线

    ### 设置数据库连接上限详解 在IT领域中,数据库作为存储和管理数据的核心组件,其稳定性和性能至关重要。其中,“设置数据库的连接上线”这一概念主要指的是为了保障数据库系统的正常运行和资源合理分配,通过配置...

    java数据库连接池.pdf

    数据库连接池设计概念及实现思路:数据库连接池(Database Connection Pool)是一种管理数据库连接的技术,它维护着一组已创建的数据库连接,当应用程序需要时,可以从池中获取一个连接,用完后再归还。这样可以...

    Oracle数据库错误消息手册

    这些原因可能涉及SQL语句的语法错误、系统资源不足、数据不一致、权限问题、网络连接故障等多种因素。 3. **推荐行动**:手册不仅指出问题所在,还会提供相应的解决方案或建议,帮助用户快速定位并解决问题。这可能...

    java 连接数据库实现用户登录功能

    此外,为了提高安全性,登录尝试失败次数过多时应锁定账户,同时要考虑使用连接池管理数据库连接,以提高性能并减少资源消耗。 通过阅读提供的README.md文件和解压`java 连接Oracle数据库实现用户登录.rar`,你将...

    获取水晶报表数据库连接项

    - **连接池**:合理配置数据库连接池,避免过多的数据库连接消耗系统资源。 - **数据源更新**:当数据库结构变更时,需要重新连接并刷新字段,以确保报表与数据库保持同步。 - **连接测试**:定期测试连接,确保在...

    局域网连接数据库程序

    5. **错误处理与性能优化**:确保程序能够正确处理连接失败、查询错误等情况,同时考虑并发性能和资源管理,如连接池的使用,避免过多的数据库连接开销。 6. **安全性**:在局域网环境下,必须确保数据的安全性,...

    数据库连接.docx

    在MATLAB 2016a中实现数据库连接是一项重要的技术能力,它能够帮助用户直接从数据库中读取和处理数据,从而提高数据分析的效率。本文档详细介绍了如何在MATLAB 2016a中完成与SQL Server数据库的连接,并提供了关键...

    WAS数据库连接配置文档

    **WebSphere Application Server (WAS) 数据库连接配置** 在企业级应用开发中,WebSphere Application Server (WAS) 是一款广泛使用的中间件,用于托管Java应用程序。它提供了丰富的功能,包括事务处理、安全管理...

    Delphi三层数据库连接池

    6. **性能优化**:根据系统需求调整连接池的大小,避免过多的数据库连接占用资源。同时,考虑使用连接池的缓存机制,减少不必要的网络通信。 总之,Delphi三层数据库连接池的应用可以帮助我们构建高效、稳定的...

    oracle数据库中ora-报错原因及处理

    3. **分析原因**:根据错误信息,分析可能的问题源。可能是SQL语句错误、表空间不足、索引问题、权限问题、网络问题,或者是数据库内部的bug等。 4. **制定解决方案**:确定了问题的根源后,可以制定解决策略。这...

    发布一个自己写的数据库连接池(测试),附带源码,非常好

    通过对源代码的分析和示例的实践,开发者不仅可以了解数据库连接池的工作原理,还可以根据具体需求对其进行定制和优化,提升自己的Java编程技能。对于初学者来说,这是一个极好的学习机会,而对于有经验的开发人员,...

    连接oracle数据库的cmd命令

    在IT领域,尤其是在数据库管理与开发中,Oracle数据库因其强大的功能和广泛的适用性而备受青睐。本文将基于提供的文件信息,深入探讨如何通过CMD命令行工具连接到Oracle数据库,并介绍如何利用CMD执行特定的数据库...

    水晶报表的各种错误分析

    **常见的水晶报表错误及解决方法** 1. **连接问题**:当水晶报表无法连接到数据源时,可能是因为数据源信息不正确或数据库服务器不可达。解决方法包括检查数据库连接字符串、用户名和密码是否正确,以及确保数据库...

Global site tag (gtag.js) - Google Analytics