参考链接:https://blog.csdn.net/zqz_zqz/article/details/52235479
1. 问题描述:
tomcat项目,从hbase请求数据,一直都是正常的。但是为了 迁移hbase,将hbase停了二十分钟的服务,tomcat的项目并没有跟着一起停止,导致tomcat连接不上hbase,并且发生了连接数超过最大连接数,出现了报错:
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
2. 查看并解决:
(1)用命令查看: netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
得到CLOSE_WAIT 达到 3853 这么多,所以这个等待太多了。
CLOSE_WAIT 3853
TIME_WAIT 40
ESTABLISHED 285
LAST_ACT 6
(2) 用命令查看状态持续时间:sysctl -a |grep keepalive
得到时间是两小时 :net.ipv4.tcp_keepalive_time = 7200
(3)将tomcat项目重启,一切连接数归0,所以可以恢复正常了。