首页 > 其他分享 >服务器出现大量TIME_WAIT 、CLOSE_WAIT状态的原因有哪些

服务器出现大量TIME_WAIT 、CLOSE_WAIT状态的原因有哪些

时间:2023-12-24 13:44:20浏览次数:43  
标签:状态 HTTP 服务器 TIME CLOSE 连接 WAIT

 

一、服务器出现大量CLOSE_WAIT 状态的原因
CLOSE_WAIT 状态,它是TCP四次挥手的第二次挥手被动关闭方的状态。

当服务端出现大量 CLOSE_WAIT 状态的连接的时候,说明服务端的程序没有调用 close 函数关闭连接。

二、服务器出现大量TIME_WAIT 状态的原因
TIME_WAIT 状态,它是TCP四次挥手的第四次挥手主动关闭方的状态。
原因有三点:
1)HTTP没有使用长连接
HTTP没有使用长连接,就意味着服务器主动关闭的时候,每个都要进行四次挥手,而服务器端口那么多,连接资源那么多,就会造成大量TIME_WAIT状态出现。
2)HTTP长连接超时
HTTP长连接是有超时时间的,超过这个时间,服务器就会主动关闭。
假设设置了 HTTP 长连接的超时时间是 60 秒,nginx 就会启动一个「定时器」,如果客户端在完后一个 HTTP 请求后,在 60 秒内都没有再发起新的请求,定时器的时间一到,nginx 就会触发回调函数来关闭该连接,那么此时服务端上就会出现 TIME_WAIT 状态的连接。
3)HTTP长连接的请求数量达到上限
当长连接的请求数量达到上限,服务器就会才去措施主动关闭一些连接。
比如对于一些 QPS 比较高的场景,比如超过 10000 QPS,甚至达到 30000 , 50000 甚至更高,如果 keepalive_requests 参数值是 100,这时 nginx 就会很频繁地关闭连接,那么此时服务端上就会出大量的 TIME_WAIT 状态。

标签:状态,HTTP,服务器,TIME,CLOSE,连接,WAIT
From: https://www.cnblogs.com/beatle-go/p/17924305.html

相关文章

  • OpenPLC官方文档简单翻译(二)OpenPLC Runtime
    参考网址:https://autonomylogic.com/docs/2-1-openplc-runtime-overview/网站更新时间:2022-10-052.1 OpenPLCRuntime概述OpenPLCRuntime用来运行Editor创建的PLC程序。Mainruntime有一个内置的网络服务器,可以配置runtime的多个参数。但OpenPLCruntime的微型实现(直接运行......
  • 磁盘性能检测(time&&fio)
    一、time命令:timeddif=/tmp/test1of=/tmp/test2bs=8kcount=51200oflag=dsync参数说明:1、time有计时作用,dd用于复制,从if读出,写到of;2、if=/dev/zero不产生IO,因此可以用来测试纯写速度;3、同理of=/dev/null不产生IO,可以用来测试纯读速度;4、将/tmp/test1拷贝到/tmp/te......
  • 【Linux】正则匹配SQL里面的时间 TIMESTAMP
    在使用plsql或者dbeaver的insertsql导出的时候通常日期格式的会导出为以下形式,我们通常将这些日期需要更新为sysdate或者to_char(sysdate,'YYYYMMDD')的形式,此时可以使用正则匹配来替换,以下列举了常见的两种时间场景:1.匹配TIMESTAMP'2023-12-2318:00:01:000000'通常创建时......
  • 使用 Helm Chart 部署分布式 GreptimeDB
    部署分布式GreptimeDB文档大纲一、概述什么是HelmChart一、概述什么是HelmChart是一种用于管理和部署Kubernetes应用程序的工具。它通过定义应用程序的资源、依赖关系和配置参数等信息,将应用程序打包成一个可重复部署的单元。HelmChart具有模板化的特性,可以根据不同的环......
  • 关于debezium同步mysql字段类型的datetime、date、time、timestamp的格式转换说明
    1.情景展示使用debezium的插件:debezium-connector-oracle(io.debezium.connector.mysql.MySqlConnector),自动读取mysql日志binlog相关表的数据变更记录,然后将其发布到kafkatopic当中。现在遇到的问题是:在mysql当中,表示日期类型的数据类型有:datetime、date和timestamp;表示时间......
  • 10个必备的 async/await 工具函数
    |当谈到异步编程时,async/await是JavaScript中常用的功能之一。下面是10个常用的await和async函数示例,以及对它们的代码用途的解析:1.异步获取数据asyncfunctionfetchData(){constresponse=awaitfetch('https://api.example.com/data');constdata=awaitrespons......
  • sleep()方法和wait()方法的比较
    大家好,我是joker,希望你快乐。sleep()方法和wait()方法都是让线程进入到等待状态。具体的一些区别我们下面来进行一个对比总结。使用方式不同wait()方法必须配合synchronized一起使用,不然在运行时就会抛出IllegalMonitorStateException的异常。sleep()方法不需要,可以单独使......
  • WepApi TaskCanceledException A任务已取消--async+await的方案替代task.Wait()可有效
     在.netCore中httpClient添加配置超时时长也没用services.AddHttpClient("PPHttpClient",config=>{config.DefaultRequestHeaders.Add("Accept","*/*");config.DefaultRequestHeaders.Add("A......
  • JavaTimeModule 所在包
    JavaTimeModule是jackson转换java8时间类的需要的typo包,但是jackson-databind包中不存在这个类,JavaTimeModule所在包为jackson-datatype-jsr310,maven坐标如下:<!--https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310--><dependency......
  • 【go】Go (Golang) 语言-Golang 定时器Timer和Ticker、time.AfterFunc、time.NewTicke
    Golang定时器Timer和TickerGolang定时器包括:一次性定时器(Timer)和周期性定时器(Ticker)。编程中经常会通过timer和ticker、AfterFunc定时器NewTicker是设定每隔多长时间触发的,是连续触发,而计时器NewTimer是等待多长时间触发的,只触发一次,两者是不同的。等待时间函数AfterFunc是......