AB资源网(www.xxab.cn)服务器导航站-找服务器商就上AB资源网
百度360必应搜狗本站头条
【本站公告】:本站互助计划,欢迎有活动的服务器商免费投稿,免费收录,最新收录会在首页展示! - 站长QQ:6502567
当前位置:网站首页 > 技术文档 > 正文

高效管理服务器性能:time_wait状态的优化 (服务器性能调优time_wait)

AB资源网 2023-09-19 19:22 423 浏览 0 评论

作为服务器管理员,通常会经常发现一些特殊的网络状态,例如time_wt状态,这个状态通常是由于网络连接的关闭而导致的。然而,这个状态也可能会导致服务器性能变差,因此我们需要对它进行一些优化来改善服务器性能。

高效管理服务器性能:time_wait状态的优化 (服务器性能调优time_wait)

什么是time_wt状态?

在网络连接被关闭后,通常需要将这个连接保持一段时间,以便服务器能够正确的处理该连接的剩余数据等信息。这个时候就会出现time_wt状态,它通常是一个固定的时间段,通常为30秒,如果在这段时间内没有其他数据包,那么该连接就会被关闭,如果此期间有数据包,则会重新计时。

为什么time_wt状态会影响服务器性能?

事实上,time_wt状态对服务器的性能影响是非常严重的,这是由于它不仅占用了服务器内存资源,还阻止了这些资源被其他应用程序利用,从而导致服务器不能正常运行。而且,在某些情况下,time_wt状态还会导致服务器崩溃,如果出现这种情况,那么会对整个服务产生非常恶劣的影响。

如何优化time_wt状态?

为了优化time_wt状态并提高服务器性能,我们需要采取以下措施:

1、优化tcp连接超时时间

tcp连接超时时间通常是time_wt状态的一个重要因素,如果连接时间太长,那么就会导致time_wt状态的出现,从而导致服务器性能变差。因此,我们需要合理配置tcp连接的超时时间,一般来说,超时时间不应设置得太长,更好控制在20秒左右。

2、合理配置tcp回收机制

tcp回收机制也是优化time_wt状态的关键,它可以确保服务器在不需要该连接时,能够及时地回收所有的资源。因此,我们可以通过合理配置tcp回收机制来优化time_wt状态,以确保服务器能够正常运行。

3、优化服务器的网络性能

优化服务器的网络性能也是优化time_wt状态的一个重要措施,我们可以通过增加带宽、优化网络协议等方式来提高服务器的网络性能,这样一来,我们不仅能够避免出现time_wt状态,还能减少服务器死机的风险。

4、使用高效的负载均衡策略

在实际应用中,服务器往往需要处理成千上万的连接请求,因此,使用高效的负载均衡策略也是优化time_wt状态的一种重要手段。通过合理的负载均衡策略,可以让服务器合理地分担压力,并且保证所有连接都能得到及时而有效的处理。

结论

time_wt状态是服务器管理中常见的一种网络状态,它通常由于网络连接的关闭而导致,如果不及时处理,就会导致服务器性能变差,从而影响整个服务的正常运行。因此,我们需要采取一些措施来优化time_wt状态,以改善服务器性能。通过合理配置tcp连接超时时间、优化tcp回收机制、提高服务器的网络性能、使用高效的负载均衡策略等方式,我们可以有效地优化time_wt状态,保证服务器能够正常运行。

相关问题拓展阅读:

  • centos7.4内核调优,tcp单服务器万级并发
  • linux内核优化参数

centos7.4内核调优,tcp单服务器万级并发

在使用linux的centos7.4遇到的各种坑,其中一个项目采用四层架构,配置层,平台层,逻辑服务器管理层和集体逻辑服务器层的,一个整体的 游戏 项目,其中,作为整个项目负责人和架构打架绝差着,项目运行一年来并卖皮,遇到了各种各样怪异的问题。其中就是tcp缓存区堵塞的问题,刚开始时候,以为是代码问题,花了半年的时间来配漏排除,验证,把能想到的问题都做了一个遍,问题还是存在。最后应该几个调优和验证。附上算比较稳定centos7.4的内核调优详细参数如下:

内核

配置文件

:/etc/sysctl.conf

net.ipv4.tcp_mem =

net.ipv4.tcp_wmem =

net.ipv4.tcp_rmem =

#net.core.somaxconn=

net.core.wmem_default =

net.core.rmem_default =

net.core.rmem_max =

net.core.wmem_max =

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_max_syn_backlog=81920

net.ipv4.tcp_timestamps=0

# 参数的值决定了内核放弃链接之前发送SYN+ACK包的数量,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_synack_retries,默认是2

net.ipv4.tcp_synack_retries=3

# 表示内核放弃建立链接之前发送SYN包的数量,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syn_retries,默认是6

net.ipv4.tcp_syn_retries=3

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 300

net.ipv4.ip_local_port_range =

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.route.max_size =

kernel.sem=2023

kernel.msgmnb =

kernel.msgmni = 64

kernel.msgmax = 65535

#设置更大内存共享段大小bytes

kernel.shmmax =

kernel.shmall =

kernel.shmmni =

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_no_metrics_save=1

# 开启SYN洪水攻击保护

kernel.core_uses_pid = 1

net.ipv4.conf.lo.arp_announce=2

net.ipv4.tcp_sack = 1

kernel.randomize_va_space=1

net.nf_conntrack_max =

net.netfilter.nf_conntrack_max =

net.netfilter.nf_conntrack_tcp_timeout_established = 180

#net.ipv4.netfilter.ip_conntrack_max=

net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120

net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60

net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

#避免放大攻击

net.ipv4.icmp_echo_ignore_broadcasts=1

#关闭ipv6

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

# 开启恶意icmp错误消息保护

net.ipv4.icmp_ignore_bogus_error_responses = 1

#关闭路由转发

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

#开启反向路径过滤

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

#处理无源路由的包

net.ipv4.conf.all.accept_source_route = 0

net.ipv4.conf.default.accept_source_route = 0

#关闭sysrq功能

kernel.sysrq = 0

#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的更大数目

net.core.netdev_max_backlog =

#限制仅仅是为了防止简单的DoS 攻击

net.ipv4.tcp_max_orphans =

# 确保无人能修改

路由表

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 0

net.ipv4.conf.default.secure_redirects = 0

vm.swappiness = 0

#决定检查过期多久邻居条目

net.ipv4.neigh.default.gc_stale_time=120

fs.file-max =

fs.nr_open =

kernel.perf_cpu_time_max_percent=60

kernel.perf_event_max_sample_rate=6250

kernel.sched_migration_cost_ns=

net.core.optmem_max=

vm.max_map_count=262144

net.core.somaxconn = 65535

#使用arp_announce / arp_ignore解决ARP映射问题

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.all.arp_announce=2

net.ipv4.conf.lo.arp_announce=2

linux内核优化参数

作为高性能WEB服务器,只调整Nginx本身的参数是不行的,因为Nginx服务依赖于高性能的操作系统。

以下为常见的几个Linux内核参数优化方法。

net.ipv4.tcp_max_tw_buckets

对于tcp连接,服务端和客户端通信完后状态变为timewait,假如某台服务器非常忙,连接数特别多的话,那么这个timewait数量就会越来越大。

毕竟它也是会占用一定的资源,所以应该有一个更大值,当超过这个值,系统就会删除最早的连接,这样始终保持在一个数量级。

这个数值就是由net.ipv4.tcp_max_tw_buckets这个参数来决定的。

CentOS7系统,你可以使用sysctl -a |grep tw_buckets来查看它的值,默认为32768,

你可以适当把它调低,比如调整到8000,毕竟这个状态的连接太多也是会消耗资源的。

但你不要把它调到几十、几百这样,因为这种状态的tcp连接也是有用的,

如果同样的客户端再次和服务端通信,就不用再次建立新的连接了,用这个旧的通道,省时省力。

net.ipv4.tcp_tw_recycle = 1

该参数的作用是快速回收timewait状态的连接。上面虽然提到系统会自动删除掉timewait状态的连接,但如果把这样的连接重新利用起来岂不是更好。

所以该参数设置为1就可以让timewait状态的连接快速回收,它需要和下面的参数配合一起使用。

net.ipv4.tcp_tw_reuse = 1

该参数设置为1,将timewait状态的连接重新用于新的TCP连接,要结合上面的参数一起使用。

net.ipv4.tcp_syncookies = 1

tcp三次握手中,客户端向服务端隐纤发起syn请求,服务端收到后,也会向客户端发起syn请求同时连带ack确认,

假如客户端发送请求后直接断开和服务端的连接,不接收服务端发起的这个请求,服务端会重试多次,

这个重试的过程会持续一段时间(通常高于30s),当这种状态的连接数量非常大时,服务器会消耗很大的资源,从而造成瘫痪,

正常的连接进不来,这种恶意的半连接行为其实叫做syn flood攻洞携乱击。

设置为1,是开启SYN Cookies,开启后可以避免发生上述的syn flood攻击。

开启该参数后,服务端接收客户端的ack后,再向客户端发送ack+syn之前会要求client在短时间内回应一个序号,

如果客户端不能提供序号或者提供的序号不对则认为该客户端不合法,于是不会发ack+syn给客户端,更涉及不到重试。

net.ipv4.tcp_max_syn_backlog

该参数定义系统能接受的更大半连接状态的tcp连接数。客户端向服务端发送了syn包,服务端收到后,会记录一下,

该参数决定最多能记录几个这样的纳档连接。在CentOS7,默认是256,当有syn flood攻击时,这个数值太小则很容易导致服务器瘫痪,

实际上此时服务器并没有消耗太多资源(cpu、内存等),所以可以适当调大它,比如调整到30000。

net.ipv4.tcp_syn_retries

该参数适用于客户端,它定义发起syn的更大重试次数,默认为6,建议改为2。

net.ipv4.tcp_synack_retries

该参数适用于服务端,它定义发起syn+ack的更大重试次数,默认为5,建议改为2,可以适当预防syn flood攻击。

net.ipv4.ip_local_port_range

该参数定义端口范围,系统默认保留端口为1024及以下,以上部分为自定义端口。这个参数适用于客户端,

当客户端和服务端建立连接时,比如说访问服务端的80端口,客户端随机开启了一个端口和服务端发起连接,

这个参数定义随机端口的范围。默认为,建议调整为。

net.ipv4.tcp_fin_timeout

tcp连接的状态中,客户端上有一个是FIN-WAIT-2状态,它是状态变迁为timewait前一个状态。

该参数定义不属于任何进程的该连接状态的超时时间,默认值为60,建议调整为6。

net.ipv4.tcp_keepalive_time

tcp连接状态里,有一个是established状态,只有在这个状态下,客户端和服务端才能通信。正常情况下,当通信完毕,

客户端或服务端会告诉对方要关闭连接,此时状态就会变为timewait,如果客户端没有告诉服务端,

并且服务端也没有告诉客户端关闭的话(例如,客户端那边断网了),此时需要该参数来判定。

比如客户端已经断网了,但服务端上本次连接的状态依然是established,服务端为了确认客户端是否断网,

就需要每隔一段时间去发一个探测包去确认一下看看对方是否在线。这个时间就由该参数决定。它的默认值为7200秒,建议设置为30秒。

net.ipv4.tcp_keepalive_intvl

该参数和上面的参数是一起的,服务端在规定时间内发起了探测,查看客户端是否在线,如果客户端并没有确认,

此时服务端还不能认定为对方不在线,而是要尝试多次。该参数定义重新发送探测的时间,即之一次发现对方有问题后,过多久再次发起探测。

默认值为75秒,可以改为3秒。

net.ipv4.tcp_keepalive_probes

第10和第11个参数规定了何时发起探测和探测失败后再过多久再发起探测,但并没有定义一共探测几次才算结束。

该参数定义发起探测的包的数量。默认为9,建议设置2。

设置和范例

在Linux下调整内核参数,可以直接编辑配置文件/etc/sysctl.conf,然后执行sysctl -p命令生效

cat >> /etc/sysctl.conf

# kernel optimization

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.ip_local_port_range =

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

net.core.somaxconn = 16384

net.core.netdev_max_backlog = 16384

net.ipv4.tcp_max_orphans = 16384

EOF # 《Linux就该这帆茄态么学》

将上面的内核参数加入/etc/sysctl.conf文件中,执行如下命令纳埋使之生效:

sysctl -p

服务器性能调优time_wait的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于服务器性能调优time_wait,高效管理服务器性能:time_wait状态的优化,centos7.4内核调优,tcp单服务器万级并发,linux内核优化参数的信息别忘了在本站进行查找喔。

腾讯云

相关推荐

云主机FTP软件:高效传输与安全管理的一站式解决方案

在云计算时代,云主机已成为企业和个人用户托管应用和存储数据的首选。为了方便文件传输,FTP(文件传输协议)软件在云主机环境中扮演着重要角色。本文将详细介绍如何在云主机上配置和使用FTP软件...

云主机FP:引领未来计算,解锁无限可能

云主机FP(FloatingPoint)是指在云计算环境中,针对浮点运算性能进行优化的虚拟机实例。浮点运算在科学计算、工程模拟、金融建模、图形处理等领域中占据重要地位,因此云主机FP的设计和配置...

云主机ECS:解锁企业数字化转型的新引擎,高效、安全、灵活的云计算解决方案

云主机ECS(ElasticComputeService)是阿里云提供的一种弹性计算服务,它允许用户在云端创建和管理虚拟机实例。ECS的核心优势在于其灵活性和可扩展性,能够满足各种规模和类型的业...

云主机D盘:解锁无限存储空间,轻松应对大数据挑战!

云主机是一种基于云计算技术的虚拟化服务器,它允许用户在云平台上创建、配置和管理虚拟机实例。在云主机中,磁盘分区是存储数据的关键部分,通常包括系统盘和数据盘。系统盘用于安装操作系统和运行应用...

云主机DNS解析:提升网站速度与稳定性的关键策略

云主机DNS(DomainNameSystem)是云计算环境中至关重要的一部分,它负责将域名转换为IP地址,从而使得用户能够通过易于记忆的域名访问云主机上的服务和应用。本文将深入探讨云主机DNS...

云主机C盘爆满?快速解决方法大揭秘,让你的服务器重获新生!

云主机C盘满了是一个常见但棘手的问题,尤其对于依赖云服务进行日常运营的企业和个人用户来说,这可能导致系统性能下降、应用程序崩溃,甚至数据丢失。本文将详细探讨云主机C盘满的原因、影响以及解决方法。...

云主机CPU选择指南:提升性能与效率的关键决策

在选择云主机的CPU时,用户需要考虑多个因素,以确保所选的CPU能够满足其应用的需求,同时优化成本效益。以下是一些关键点,帮助用户在云主机CPU选择过程中做出明智的决策。了解应用的性能需求...

云主机CPU性能大比拼:揭秘顶级云服务商的核心竞争力

云主机CPU是云计算环境中至关重要的组成部分,它直接影响着云服务的性能、稳定性和用户体验。CPU,即中央处理器,是计算机系统的核心,负责执行指令和处理数据。在云主机中,CPU的性能决定了虚...

云主机ASP:高效搭建动态网站,轻松实现业务扩展与性能优化

云主机ASP(ActiveServerPages)是一种在云环境中运行ASP应用程序的技术。ASP是一种由微软开发的动态网页技术,允许开发者使用VBScript或JScript等脚本语言编写服务...

云主机API:解锁无限可能,引领企业数字化转型新纪元

云主机API(ApplicationProgrammingInterface)是云计算服务提供商为用户提供的一种编程接口,允许开发者通过编程方式管理和操作云主机资源。这些API通常基于RESTf...

云主机99idc:高效稳定,轻松搭建您的专属云端空间,一键部署,畅享无限可能!

云主机99idc是一家专注于提供云计算服务的公司,其核心业务是为企业和个人用户提供高性能、高可靠性的云主机服务。随着数字化转型的加速,云计算已经成为企业IT基础设施的重要组成部分,而云主机99i...

云主机80端口:解锁无限可能,开启高效网络新时代!

云主机是一种基于云计算技术的虚拟化服务器,它通过互联网提供计算资源和服务。在云主机中,80端口是一个非常重要的端口,通常用于HTTP协议,即网页服务。本文将详细探讨云主机80端口的相关内容...

云主机403错误:解锁高效解决方案,提升网站性能与安全

云主机403错误是一个常见的网络问题,通常表示用户在尝试访问某个资源时被服务器拒绝。这种错误可能由多种原因引起,包括权限问题、配置错误、防火墙设置等。以下是关于云主机403错误的一些详细信...

云主机360:全方位云端解决方案,助力企业数字化转型无忧

云主机360是一种基于云计算技术的虚拟化服务器解决方案,它通过将物理服务器资源虚拟化,为用户提供灵活、高效、安全的计算服务。云主机360的核心优势在于其高度的可扩展性和弹性,用户可以根据业务需求...

云主机301:引领未来云计算的新纪元,高效稳定,助力企业数字化转型!

云主机301是一种常见的网络重定向状态码,通常用于指示用户请求的资源已被永久移动到新的URL。在云计算环境中,云主机301状态码的出现可能涉及到多种技术和管理策略,下面我们将详细探讨这一现象。...

取消回复欢迎 发表评论: