当前位置: 首页 > news >正文

创意设计小发明seo整站优化解决方案

创意设计小发明,seo整站优化解决方案,深圳酒店网站建设,盐城网站建设现象:MeterSphere更换压力机后,压测出现出现HttpHostConnectException 解决方案: net.ipv4.tcp_tw_reuse默认是0或者2,更改为1 net.ipv4.tcp_tw_reuse,表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连…

现象:MeterSphere更换压力机后,压测出现出现HttpHostConnectException

解决方案:

net.ipv4.tcp_tw_reuse默认是0或者2,更改为1

  • net.ipv4.tcp_tw_reuse,表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接;那么,当连接被复用了之后,延迟或者重发的数据包到达,新的连接怎么判断,到达的数据是属于复用后的连接,还是复用前的连接呢?这就需要依赖net.ipv4.tcp_timestamps字段了。复用连接后,这条连接的时间被更新为当前的时间,当延迟的数据达到,延迟数据的时间是小于新连接的时间,所以,内核可以通过时间判断出,延迟的数据可以安全的丢弃掉了。

参考文章:jmeter压测过程中,TIME_WAIT很多导致请求数上不去问题解决-腾讯云开发者社区-腾讯云 (tencent.com)

背景介绍

        为了摸底项目的性能,需要进行性能测试。经过一番调研之后,决定使用基于腾讯云TKE的分布式jmeter进行压测,好处是有jmeter-suite可用,搭建环境方便;容器化部署可以方便的增加pod来提升压力。

       但是在实际施压的时候,发现请求量上不去,达不到压测效果。经定位发现,容器pod上存在大量TIME_WAIT,而实际在传输数据的连接远小于设置的并发线程数:

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

复制

为什么会有TIME_WAIT

       这是TCP连接释放的4次挥手的过程:

  1. 主动关闭连接的一方,调用close();协议层发送FIN包
  2. 被动关闭的一方收到FIN包后,协议层回复ACK;然后被动关闭的一方,进入CLOSE_WAIT状态,主动关闭的一方等待对方关闭,则进入FIN_WAIT_2状态;此时,主动关闭的一方
  3. 等待
  4. 被动关闭一方的应用程序,调用close操作
  5. 被动关闭的一方在完成所有数据发送后,调用close()操作;此时,协议层发送FIN包给主动关闭的一方,等待对方的ACK,被动关闭的一方进入LAST_ACK状态;
  6. 主动关闭的一方收到FIN包,协议层回复ACK;此时,主动关闭连接的一方,进入TIME_WAIT状态;而被动关闭的一方,进入CLOSED状态
  7. 等待2MSL时间,主动关闭的一方,结束TIME_WAIT,进入CLOSED状态

       这个过程可以得到一下几个信息:

  • ESTABLISHED状态,表示正在发送请求的连接,即正在施压的请求个数
  • 主动关闭连接的一方最终会进入TIME_WAIT状态
  • TIME_WAIT会默认等待2MSL时间后,才最终进入CLOSED状态;
  • 在一个连接没有进入CLOSED状态之前,这个连接是不能被重用

哪些情况会产生这么多TIME_WAIT,怎么处理

线程数确实很多,就可能会产生大量的TIME_WAIT

       比如并行的线程数上万,由于一般是施压方主动断开连接,因此会积累大量的TIME_WAIT。建议解决方案:

  • 建议使用分布式压测,将线程数分散到多台机器,这里可以使用云原生压测平台进行

jmeter的配置会影响TIME_WAIT的产生

  • 建议开启该配置,使用长连接,这样会复用连接发送请求

  • Ramp-up时间(秒),这个配置表示多长时间把线程全部生成,需要根据业务情况做好配置,避免一次性生成太多配置,直接把施压机器搞垮,积累较多TIME_WAIT
  • Same user on each iteration,在 JMeter 中,user 就是线程,此选项的意思是说每个迭代都用相同的线程。它的影响就是单个线程多次迭代使用同一个线程,因为销毁和创建线程本身就会占用资源,可能会影响性能测试结果。建议开启

Linux本身没有设置回收使用TIME_WAIT状态的连接

       如第二节中所述,TIME_WAIT状态的连接,需要2MSL时间后才能回收端口用于创建新的连接,但是实际Linux内核配置支持快速回收TIME_WAIT状态的连接,配置可查看:

cat /etc/sysctl.conf

复制

  • net.ipv4.tcp_tw_recycle,该配置表示快速回收TIME_WAIT连接,但在NAT网络下,会导致连接失败(刚好使用的就是NAT),另外Linux 从4.12内核版本开始移除了 tcp_tw_recycle 配置,我这里的机器是4.14,因此直接注释掉
  • net.ipv4.tcp_tw_reuse,表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接;那么,当连接被复用了之后,延迟或者重发的数据包到达,新的连接怎么判断,到达的数据是属于复用后的连接,还是复用前的连接呢?这就需要依赖net.ipv4.tcp_timestamps字段了。复用连接后,这条连接的时间被更新为当前的时间,当延迟的数据达到,延迟数据的时间是小于新连接的时间,所以,内核可以通过时间判断出,延迟的数据可以安全的丢弃掉了。
  • net.ipv4.tcp_timestamps,在重用连接的情况下,该配置能帮助操作系统识别新来的数据是旧连接的还是新连接的

实验下修改后的修过

       使用百度来实验压测,实测相同的线程下,压出来的QPS大幅提升。

http://www.yidumall.com/news/51847.html

相关文章:

  • bootstrap 网站源代码广州网络营销产品代理
  • 如何在jsp上做网站页面代码想做app推广项目在哪找
  • 可以完成交易的网站 做seo入门教程视频
  • 建设银行余额查询网站网站建设问一问公司
  • 唐河企业网站制作哪家好企业如何做网络推广
  • 最新章节 62.一起来做网站吧建站公司哪家好
  • 人才招聘网站怎么做沈阳seo网站推广
  • 沧州做网站优化哪家公司便宜百度产品大全
  • 江西做网站2021最近最火的关键词
  • 网站优化新闻江门网站优化公司
  • FLASK做wiki网站百度站长收录
  • 公司网站制作设电商网店
  • 凡科网站自己如何做西安seo托管
  • 旅游网站后台模板时事新闻最新消息
  • 合水网站建设宁波关键词网站排名
  • 石家庄模板自助建站网店推广方案范文
  • 网站设计导航栏高度电商培训内容
  • 最好的手机网站建设重大新闻事件2023
  • remal wordpress重庆网站优化
  • 私人网站建设成本如何做推广呢
  • 营销技巧分享沈阳关键词优化价格
  • wordpress第一篇文章seo综合查询接口
  • 做外贸接私单的网站seo优化费用
  • 苏州学习网站建设国内疫情最新情况
  • 短网址网站济南百度
  • 万网个人网站备案查询网站运营与维护
  • 可以做区块链推广的网站民宿平台搜索量上涨
  • 重庆做商城网站舆情信息在哪里找
  • 哪些网站做装修搜索引擎分哪三类
  • 郑州 网站建设 东区凌云seo博客