`

windows平台连接mysql数据库异常(数据量过大)

阅读更多
错误代码如下
org.hibernate.exception.JDBCConnectionException: Cannot open connection
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
        at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426)
        at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
        at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)

Caused by: java.net.BindException: Address already in use: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)


The driver was unable to create a connection due to an inability to establish the client portion of a socket.
This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable.
For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system reconfiguration may also be required.
For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271).

看过一些文章大致总结如下:



短时间内new socket操作过多
  而socket.close()操作并不能立即释放绑定的端口
  而是把端口设置为TIME_WAIT状态
  过段时间(默认240s)才释放(用netstat -na可以看到)
  最后系统资源耗尽
  (windows上是耗尽了pool of ephemeral ports 这段区间在1024-5000之间)

原文连接:http://blog.chinaunix.net/u/29553/showart_450701.html



java.net.BindException: Address already in use: connect的问题
大概原因是短时间内new socket操作很多,而socket.close()操作并不能立即释放绑定的端口,而是把端口设置为TIME_WAIT状态,过段时间(默认240s)才释放,(用netstat -na可以看到),最后系统资源耗尽(windows上是耗尽了pool of ephemeral ports ,这段区间在1024-5000之间; )
避免出现这一问题的方法有两个,一个是调高你的web服务器的最大连接线程数,调到1024,2048都还凑合,以resin为例,修改resin.conf中的thread-pool.thread_max,如果你采用apache连resin的架构,别忘了再调整apache;
另一个是修改运行web服务器的机器的操作系统网络配置,把time wait的时间调低一些,比如30s。
在red hat上,查看有关的选项,
[xxx@xxx~]$ /sbin/sysctl -a|grep net.ipv4.tcp_tw
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
[xxx@xxx~]$vi /etc/sysctl,修改
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
[xxx@xxx~]$sysctl -p,使内核参数生效

原文连接:http://hi.baidu.com/w_ge/blog/item/105877c6a361df1b9c163d21.html



当您尝试从 TCP 端口大于 5000 连接收到错误 ' WSAENOBUFS (10055) '
症状如果您尝试建立 TCP 连接从端口是大于 5000, 本地计算机响应并以下 WSAENOBUFS (10055) 错误信息: 因为系统缺乏足够缓冲区空间或者因为队列已满无法执行套接字上操作。
解决方案要点 此部分, 方法或任务包含步骤告诉您如何修改注册表。 但是, 如果修改注册表错误可能发生严重问题。 因此, 确保仔细执行这些步骤。 用于添加保护之前, 修改备份注册表。 然后, 在发生问题时还原注册表。 有关如何备份和还原注册表, 请单击下列文章编号以查看 Microsoft 知识库中相应:
默认最大数量的短暂 TCP 端口为 5000 ' 适用于 ' 部分中包含产品中。 这些产品中已添加新参数。 要增加最大值是短暂端口, 请按照下列步骤操作:
1.启动注册表编辑器。 2.注册表, 中找到以下子项, 然后单击 参数 : HKEY _ LOCAL _ MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
3.在 编辑 菜单, 单击 新建 , 然后添加以下注册表项:
值名称: MaxUserPort
值类型: DWORD
值数据: 65534
有效范围: 5000 - 65534 (十进制)
默认: 0x1388 5000 (十进制)
说明: 此参数控制程序从系统请求任何可用用户端口时所用最大端口数。 通常, 1024 的值和含 5000 之间分配临时 (短期) 端口。
4.退出注册表编辑器, 并重新启动计算机。 注意 一个附加 TCPTimedWaitDelay 注册表参数决定多久关闭端口等待可以重用关闭端口。

原文连接:http://support.microsoft.com/kb/q196271/



(比较全的解决办法)
.操作系统对半连接数的限制。

这个可以使用迅雷菜单中的工具进行修改,或者使用tcpz软件来修改,其他的如:XP优化工具也有这个功能。

经过以上的修改还是发生异常

原文连接 http://hi.baidu.com/ltq_john/item/e45aa5c4b407ea3b98b49868
分享到:
评论

相关推荐

    c++封装MYSQL数据库连接代码

    前者将结果存储在内存中,适合大数据量查询;后者逐行读取结果,适用于内存有限的情况。`mysql_fetch_row()`函数用于从结果集中获取一行数据,返回一个字符数组,每个元素对应一个字段值。 6. **错误处理**:在C++...

    浅谈Java中Mysql数据库的连接与操作.pdf

    连接MySQL数据库的步骤包括引入必要的java.sql包、加载JDBC驱动程序、创建数据库连接(Connection),以及创建数据库连接后进行操作。在Java代码中,这一过程大致如下: 1. 导入java.sql包; ```java import java....

    opc 客户端c#编写(数据同时存入mysql数据库)

    如果数据量大,可以考虑批量插入以提高性能。 7. **错误处理**:在整个过程中,需要捕获可能出现的异常,如网络中断、数据库连接失败等,并采取相应的恢复措施。 8. **关闭连接**:操作完成后,记得关闭数据库连接...

    C#串口调试助手,收发数据保存在MYSQL数据库,接收数据可绘图

    将收发数据保存在数据库中,不仅可以方便地进行历史数据查询,还可以进行大数据量的处理和分析,为后期的数据挖掘提供了基础。 工业级图表控件iplotX用于接收数据的实时绘图。在串口通信中,数据可视化可以帮助...

    C# 写的Excel导入mysql数据库

    本项目涉及的是利用C#将Excel数据导入到MySQL数据库中,这在数据分析、报表处理或者数据迁移等场景中非常常见。下面,我将详细讲解这个过程中的关键知识点。 1. **C#与.NET Framework**: C#是微软公司开发的一种...

    C#编写的MYSQL数据库备份恢复工具(源代码)

    总的来说,这个C#编写的MYSQL数据库备份恢复工具结合了C#的GUI编程能力与MySQL的数据管理功能,为用户提供了一种便捷的数据库维护方案。理解并掌握其工作原理,有助于提升对C#编程和数据库管理的理解,对于开发者来...

    采集和显示MQTT协议的数据和MySQL数据库中数据.zip

    【标题】: MQTT协议数据采集与MySQL数据库交互的C#实现 在当今的物联网(IoT)领域,MQTT(Message Queuing Telemetry Transport)协议因其轻量级、低带宽消耗以及高可靠性而被广泛应用于设备通信。本项目源码以C#...

    wince 连接 MYSQL服务器

    首先,`mysql.data.cf.dll`是专门为.NET Compact Framework设计的MySQL连接库,它允许WinCE应用程序通过ADO.NET接口与MySQL数据库进行交互。.NET Compact Framework是.NET Framework的一个轻量级版本,适用于资源...

    Eclipse连接MySQL数据库宣贯.pdf

    ### Eclipse连接MySQL数据库知识点详解 #### 一、环境搭建与准备 **1.1 安装JDK1.6** - **目的**:Java Development Kit (JDK) 是开发 Java 应用的基础工具包,本案例中需要安装 JDK1.6。 - **步骤**: - 下载 ...

    C#实现读取Excel并将数据更新到Mysql数据库

    如果数据量较大,考虑分批处理或异步操作以提高性能。另外,可以使用事务来确保数据的一致性,尤其是在涉及多条记录更新时。 以上就是“C#实现读取Excel并将数据更新到Mysql数据库”这一主题所涵盖的关键知识点。...

    连接oracle/mysql/sqlserver样例及各数据库对应的jar驱动包

    连接MySQL通常使用`mysql-connector-java.jar`。这个驱动包提供了Java应用程序连接到MySQL服务器的接口。在代码中,你需要设置数据库URL(通常以`jdbc:mysql://`开头),用户名和密码,然后使用类似Oracle的方式建立...

    3种连接数据库语法

    在IT行业中,数据库连接是开发过程中...此外,还需要注意版本兼容性问题,确保使用的JDBC驱动版本与数据库版本相匹配,以避免出现连接失败或数据读写异常等问题。掌握这些基础知识对于高效地进行数据库操作至关重要。

    C#连接数据库listview显示

    - 分批处理:如果数据量大,考虑分批读取,避免一次性加载大量数据导致内存压力。 5. **事件处理**: - ListView控件通常会涉及到用户交互,如点击、选择等,需要通过事件处理程序进行响应。例如,`...

    64位odbc连接mysql

    7. **性能优化**:64位ODBC驱动通常比32位版本能处理更大内存,更适应大数据量的查询。同时,通过调整ODBC驱动的参数,如预读缓冲区大小、连接池设置等,可以进一步优化性能。 8. **安全性与兼容性**:确保ODBC驱动...

    unity连接mysql工具包

    总的来说,"unity连接mysql工具包"提供了一整套解决方案,让开发者能够在Unity项目中集成MySQL数据库,实现数据的存储和检索。通过合理利用这些工具,可以创建具有复杂数据管理功能的游戏或应用,提高项目的可玩性和...

    vc++ 利用ADO访问MYSQL数据库实现基本的增加、删除、查找、更新操作

    在VC++编程环境中,利用ActiveX Data Objects (ADO) 访问MySQL数据库是常见的数据访问技术。ADO提供了一种高效且简洁的方式与多种数据库进行交互,包括MySQL。在这个项目中,我们将探讨如何通过ADO实现对MySQL数据库...

    C#开发excel导入导出+mysql数据库

    在Excel与MySQL交互时,可能会遇到的问题包括但不限于数据类型不匹配、数据量大导致的性能问题、错误处理和事务控制等。为了优化性能,可以使用批处理插入,将多条SQL语句一次性执行。错误处理则需要捕获`MySql...

    C#串口上位机+Mysql数据库+触发执行Win程序源码分享

    标题“C#串口上位机+Mysql数据库+触发执行Win程序源码分享”揭示了三个关键的技术元素:C#编程语言用于构建串口通信的上位机应用程序,MySQL数据库作为数据存储和管理的平台,以及通过特定条件触发执行Windows程序的...

    JDBC连接数据库各种数据库参数大全

    - `jdbc:mysql://`表示使用MySQL的JDBC协议连接MySQL数据库。 - `localhost`是MySQL数据库服务器的地址。 - `myDB`为数据库名称。 - `?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1`...

    MySQL数据库与ASP.NET如何强强联手.docx

    MySQL数据库与ASP.NET的结合是开发高效Web应用的一种常见策略,尤其在C#环境中,这种搭配可以发挥出强大的性能。MySQL以其经济性、易用性和高效性,在数据库领域占据了一席之地,而ASP.NET作为微软的Web应用程序开发...

Global site tag (gtag.js) - Google Analytics