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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用的信息,出现"zookeeper BindException: Address already in use"的错误是因为该地址已经被其他进程占用了。这个错误通常发生在启动ZooKeeper服务器时。具体原因可能是由于ZooKeeper服务器的配置文件中指定的端口已经被其他进程占用,导致ZooKeeper无法绑定到指定的端口上。 解决这个问题的方法有两种: 1. 检查并确保没有其他进程正在使用ZooKeeper服务器配置文件中指定的端口。可以使用命令"netstat -tuln | grep <端口号>"来查看指定端口是否被占用。如果发现有其他进程正在使用该端口,可以通过停止该进程或者更改ZooKeeper服务器的配置文件中的端口号来解决冲突。 2. 另一种可能的原因是防火墙或安全组的设置导致ZooKeeper无法绑定到指定的端口上。可以通过关闭防火墙或者将ZooKeeper服务器的端口添加到防火墙或安全组的白名单中来解决这个问题。可以使用命令"sudo ufw disable"来停止防火墙。 总结来说,"zookeeper BindException: Address already in use"错误的解决方法包括检查端口是否被占用以及关闭防火墙或将ZooKeeper服务器的端口添加到防火墙白名单中。希望这些信息能够帮助您解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Zookeeper java.net.BindException: Address already in use](https://blog.csdn.net/qq_34826249/article/details/107870264)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值