`
blacktale
  • 浏览: 7202 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

BindException: Address already in use 错误处理

阅读更多

这两天在整理爱东西网的数据时,写了一个数据库操作程序,需要大批量更新数据(几十万)。(hibernate +spring+mysql)

程序更新数据到几万的时候出错了,报异常 :

java.net.SocketException
MESSAGE: java.net.BindException: Address already in use: connect

STACKTRACE:

java.net.SocketException: java.net.BindException: Address already in use: connect
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)

从错误提示上看是端口被占。

在chinaunix上找到一个哥们的总结:

大概原因是短时间内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。


个人觉得应该是耗尽了数据库链接,或则是数据库链接资源尚未释放,而新的链接请求无法得到,于是出现异常了。

解决:增加数据库链接数,修改端口释放时间(改小),修改代码减少更新频率。

0
0
分享到:
评论

相关推荐

    解决jvmjava.net.BindException: Address already in use: JVM_Bind异常

    【Java中的`java.net.BindException: Address already in use: JVM_Bind`异常】 在Java编程中,当你尝试启动一个服务器端应用,如Tomcat,或者任何需要监听特定端口的服务时,可能会遇到`java.net.BindException: ...

    java.net.BindException: Address already in use: JVM_Bind :8088(端口冲突)

    在myeclipse中将html文件改成jsp文件时myeclipse卡住;将之前的任务关掉;再打开时多次部署项目的时候报错

    启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法

    nested exception is: java.net.BindException: Address already in use: JVM_Bind  这里说的是1099端口被其它进程占用了. 二.解决办法  找出占用1099端口的进程,进入windows命令,查看什么进程占用了1099端口...

    Bug:Address already in use: JVM_Bind问题之总结

    在编程和系统开发过程中,我们可能会遇到一个常见的错误——"Address already in use: JVM_Bind"。这个错误通常发生在尝试绑定一个已经被占用的网络端口时。本文将深入探讨这个问题,提供解决方案,并从源码角度解析...

    解除Windows系统对JMeter压测工具连接数限制

    使用JMeter压测时,报java.net.bindexception:address already is use:connect异常,可执行本资源的.bat文件,修改系统注册表。

    jemeter压测数据库

    jemeter 压测数据库 jemeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。jemeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、...

    Android 中出现java.net.BindException: bind failed: EADDRINUSE 问题解决办法

    5. **捕获异常并处理**:在创建和绑定`DatagramSocket`时,应捕获`BindException`并提供适当的错误处理,例如尝试使用其他端口或通知用户。 结合以上步骤,你的代码应该修改为: ```java if (udpSocket == null) {...

    Java Netty异常分析BindException.pdf

    在开发基于Java Netty的应用程序时,可能会遇到`java.net.BindException: Address already in use: no further information`这类错误。本篇文章将详细解析这一异常的原因、可能的影响以及如何有效地解决该问题。 ##...

    一般异常问题

    端口冲突java.net.BindException: Address already in use: JVM_Bind java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory deploy(部署)项目。点击 deploy 按钮,在弹出的Project Deployments...

    hadoop hbase 错误日志级解决

    2,localhost: java.net.BindException: Address already in use 3,ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times 4,ERROR: org.apache.hadoop.hbase.MasterNotRunningException: ...

    intellij idea 启动tomcat 1099端口被占用的解决

    nested exception is: java.net.BindException: Address already in use: JVM_Bind 这提示是 1099 端口被占用了。这是因为 Tomcat 服务器需要使用 1099 端口来启动,但是这个端口已经被其他应用程序占用了。 解决...

    如何根据Wowza服务器日志中的出错信息进行故障排查

    vhost WARN 200 - _defaultVHost_Bind failed, try again ([any]:1935): java.net.BindException: Address already in use ``` **原因分析:** 该错误通常发生在同一台服务器上有多个WowzaMediaServer实例同时运行...

    activemq服务无法正常启动.docx

    Reason: java.io.IOException: Transport Connector could not be registered in JMX: Failed to bind to server socket: tcp://0.0.0.0:61616 due to java.net.BindException: Address already in use: JVM_Bind”...

    Tomcat 启动错误(8080端口被占用)处理方法

    错误描述: 2009-7-12 15:40:35 org.apache.coyote.http11.Http11BaseProtocol start 严重: Error starting endpoint java.net.BindException: Address already in use: JVM_Bind:8080 at org.apache.tomcat.util...

    java教程源码-Java-Multiplayer-Tutorial:我的JavaMultiplayer教程系列的源代码

    java教程源码Java多人游戏教程 ...use: JVM_Bind 此错误表示您要使用的端口已被占用,很可能服务器已在运行,请尝试关闭服务器的所有实例,然后重试。 需要更多帮助 请与我们的服务器联系,以获取更多帮助。

    Socket长连接异常处理

    java.net.BindException: Address already in use 该异常发生在服务器端进行 new ServerSocket(port) 操作时,原因是因为与 port 相同的端口已经被占用,解决方法是找到一个空闲的端口。 java.net....

    错误总结.doc

    4. **java.net.BindException: Address already in use: JVM_Bind**:这意味着8080端口已被其他服务占用。你可以通过修改Tomcat配置文件`server.xml`来改变Tomcat的默认端口,如示例所示,将端口改为80或其他未使用...

    idea启动项目报端口号冲突或被占用的解决方法

    nested exception is: java.net.BindException: Address already in use: JVM_Bind 这种错误通常是由于端口号冲突或被占用导致的。 结论 Idea启动项目报端口号冲突或被占用的解决方法可以帮助开发人员快速解决...

    如何判断Tomact启动成功&8080;端口被占用要如何处理?

    如果你收到类似这样的错误提示:“java.net.BindException: Address already in use: JVM_Bind <null>:8080”,这意味着8080端口已经被另一个进程占用。这种情况在多服务部署环境中比较常见,尤其是在同一台机器上...

Global site tag (gtag.js) - Google Analytics