close_wait连接 配错

最近web服务器在大流量情况下经常出现假死现象,后台log报 too many open files 的错误,加大linux系统的文件打开数是可以解决部分问题,但是时间长了同样出问题,通过查询网络连接发现是tcp连接不关闭造成的。如下:

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘

LAST_ACK 1

SYN_RECV 15

CLOSE_WAIT 7729

ESTABLISHED 471

FIN_WAIT1 3

FIN_WAIT2 52

SYN_SENT 1

TIME_WAIT 725

从结果可以看到有大量的连接处于CLOSE_WAIT状态。

要解决这个问题的可以修改系统的参数,系统默认超时时间的是7200秒,也就是2小时。

默认如下:

tcp_keepalive_time = 7200 seconds (2 hours)

tcp_keepalive_probes = 9

tcp_keepalive_intvl = 75 seconds

意思是如果某个TCP连接在idle 2个小时后,内核才发起probe.如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效

修改后

sysctl -w net.ipv4.tcp_keepalive_time=30

sysctl -w net.ipv4.tcp_keepalive_probes=2

sysctl -w net.ipv4.tcp_keepalive_intvl=2

经过这个修改后,服务器会在短时间里回收没有关闭的tcp连接

时间: 2024-10-13 15:55:54

close_wait连接 配错的相关文章

使用JDBC获取Oracle连接时报错

The Network Adapter could not establish the connection       网络适配器不能创建连接 作为初学者的来说,这个问题让我找了好多次,每次重新开启电脑时就可以正常获取连接,过了一会儿,自己不知道做了什么就会又报错,使用pl/sql时也会登录用户半天登陆不上. 配置文件如下: 获取连接的语句如下 public static Connection getConnection(){ String className = SmbmsPropertie

web服务器出现大量CLOSE_WAIT连接的前因后果

公司网站一直很稳定,前段时间开始偶尔出现网站无法打开,提示504的错误,运维有怀疑是程序更新引起的,但是仔细看过代码并没有获取数据量过大的地方,而且数据库表现也一直很平稳.所以一直也无从下手,不知道问题出在哪里,每一次出现这个问题重启下iis可以解决,或者有的时候是过段时间自己就解决了,所以这个问题一直悬而未决. 直到昨天晚上网站再次更新,在进行功能验证的时候频繁出现这个问题.后来测试出来是一个管理身份的用户登陆就会引发这个错误,并且运维在查看服务器情况的时候发现有大量的http请求,并且状态为

Spring Boot连接MySQL长时间不连接后报错`com.mysql.cj.core.exceptions.ConnectionIsClosedException: No operations allowed after connection closed.`的解决办法

报错:com.mysql.cj.core.exceptions.ConnectionIsClosedException: No operations allowed after connection closed. 添加 &autoReconnect=true 无济于事,此选项好像仅对 MySQL 5之前的版本有效. 原因 Mysql服务器默认的"wait_timeout"是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection.这

net use \\192.168.54.145 /user:administrator "12345qwert"无法连接,错误码1326

1.在远程机的"控制面板-文件夹选项-查看-简单的文件共享",去掉选取,然后再尝试连接 2.控制面板\所有控制面板项\管理工具 下-->本地安全策略-->安全设置-->本地策略-->安全选项-->网络安全:lan管理器身份验证级别-->选择“发送LM和ntlm的响应”

socket连接返回错误码

10035-WSAEWOULDBLOCK 资源暂时不可用.对非锁定套接字来说,如果请求操作不能立即执行的话,通常会返回这个错误.比如说,在一个非暂停套接字上调用 connect,就会返回这个错误.因为连接请求不能立即执行. 10037-WSAEALREADY 操作已完成.一般来说,在非锁定套接字上尝试已处于进程中的操作时,会产生这个错误.比如,在一个已处于连接进程的非锁定套接字上,再一次调用 connect 或 WSAConnect.另外,服务提供者处于执行回调函数(针对支持回调例程的 Wins

Redis连接时报错:Could not connect to Redis at 127.0.0.1:6379: Connection refused

Could not connect to Redis at 127.0.0.1:6379: Connection refused [[email protected] bin]# redis-cli Could not connect to Redis at 127.0.0.1:6379: Connection refused [[email protected] /]# redis-server /etc/redis.conf [[email protected] /]# redis-cli

hibernate tools连接数据报错

报如下的错误: An internal error occurred during: "Fetching children of Database". org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V 尝试了各种方法,最后发现是和jcl-over-slf4j的jar包

linux单、双网卡配置以及配错

在所有的机器配置IP的时候,能用setup设置的话会更加简便,不能的时候再编辑配置文件进行配置. A.一个网卡的eth0配置ip地址: vi /etc/sysconfig/network-scripts/ifcfg-eth0: DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.20 GATEWAY=192.168.1.1 NETMASK=255.255.255.0 ----------------------------------

springboot项目连接数据报错

学习SpringBoot也没有多久,今天SpringBoot连接数据库的时候报如下错误: java.sql.SQLException: The server time zone value '?й???????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuratio