Tomcat拒绝连接原因分析

本文分析了Tomcat中常见的网络异常,如SocketTimeoutException、BindException、ConnectException等,并探讨了端口占用、连接超时和被拒绝的原因。还详细解释了SocketException的几种情况,如Connection reset和Broken pipe,以及如何处理这些问题。此外,文章提到了Tomcat的maxConnections和acceptCount参数,讨论了这两个参数如何影响Tomcat的最大并发连接数和客户端的响应时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见异常


java.net.SocketTimeoutException
超时错误,分为连接超时和读取超时,连接超时往往是由于网络不稳定造成的,但是读取超时不一定是网络延迟造成的,很有可能是下游服务的响应时间过长。


java.net.BindException: Address already in use:JVM_Bind 
端口占用 ,通过netstat -ntlp查看端口占用情况

java.net.ConnectException:Connection refused: connect
连接被拒绝,可能的问题是:网络不通(即ip地址是否写错,端口是否启用,服务是否正常)

java.net.SocketException: Socket is colsed
连接已关闭,问题是通信的一方主动关闭了socket连接,接着又对socket连接进行了读写操作,这时候会报连接已关闭的错误。

java.net.SocketException:Connection reset/Connect reset by peer: Socket write error

连接被重置,错误原因一般是:通信放将socket关闭(主动关闭或者异常导致),这时通信的另一方还在写数据,就会触发(connect reset by peer)此报错;如果对方还在尝试从TCP连接中读数据,则会抛出Connection reset 异常。解决办法:程序在退出钱要主动关闭所有网络连接;检测通信的另一方的关闭连接操作,当发现另一方关闭连接后自己也关闭连接。

java.net.SocketException: Broken pipe

通信管道损坏,一般是:通信的一方收到"Connect reset by peer:Socket write error"后,继续写数据则抛出此异常,解决办法同连接被重置的处理办法。

java.net.SocketException:Too many open files

打开文件句柄数超过限制。 可以通过lsof -p pid 查看进程打开了哪些文件,是否有打开后应该被关闭的文件因异常未关闭;若没有,则通过修改系统最大文件句柄数来增大,ulimit -a查看资源限制,ulimit -n  **** 修改最大打开的文件数。

tomcat网络参数:maxConnections和acceptCount
TCP连接处于SYN_RECV状态的连接被保存到半连接队列,队列长度由:net.ipv4.tcp_max_syn_backlog设置


完成TCP连接处理ESTABLISHED状态的连接被保存到accept队列,Tomcat Acceptor线程调用accept方法将连接取走,队列长度为:min(net.core.somaxconn,backlog),即取内核net.core.somaxconn 和tomcat配置中的最小值,其中backlog是在tomcat中配置的acceptCount参数,默认是100,net.core.somaxconn默认是128。

maxConnections是指Tomcat在任意时刻接收和处理的最大连接数,超过此阈值以后,tomcat不再从accept队列中取走连接。默认值与连接器类型有关:NIO默认值10000,APR默认是8192 

结论:tomcat的最大并发连接数等于maxConnections + acceptCount ,若acceptCount设置过大,请求等待时间会比较长,若acceptCount设置过小,高并发下,客户端将会很快触发Connection reset异常。
 

本文整理自:极客时间-李号双-《深入拆解Tomcat&&jetty》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值