tcp_tw_recycle参数引发的故障
文章转载自:https://blog.csdn.net/wireless_tech/article/details/6405755
故障描述:
2010年9月7日,新上线的手机游戏论坛有部分地区用户反应登陆游戏时出现不能登陆或登陆超时等情况,观察用户同时在线数量开始下降情况。
排错过程:
一、初步检查是否有变更导致的故障:
1、联系同事检查网络是否有问题或有对该机房网络是否有进行过调整,反回结果是没有变更操作。
2、检查在这个时间点是否有进行程序发布更新,或程序是否有作用户限制处理,反馈只进行日志调低的变更,但此类操作不影响用户的正常登陆和操作。
3、检查系统,中午11:40左右有进行了降低等待连接数的内核优化参数修改。
二、处理过程:
1、直接联系不能登陆的用户,进行登陆测试,发现同一个账号在不同地区进行登陆是正常,初步怀疑是网络问题。
2、从用户了解到,在多款游戏中,除古墓以后,其它登陆正常.并与多位用户进行了确认。排除网络问题。
3、注释掉系统内核修改的参数,使期生效,并对resin服务进行重启等操作,继续观察人数还是没有上去,同比下降了一倍。
4、进行服务迁移,将原有的三台前端APP机器迁移至另外三台,并进行接口调度切换。观察人数开始上升,用户那反馈也可以开始登陆,半小后人数上升到同比水平。故障恢复。
三、分析
当时修改系统内核参数如下:
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 720 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
总结教训:
1、初步定论在进行注释掉系统内核修改的参数时,使用命令sysctl -p,使注释的参数没有生效,出现部分手机移动用户登陆连接过早的释放和重连。由于修改过后的参数执行命令:sysctl -p之后,其新的参数值已经加载至内核,所以重启服务器并不能改变该值的状态。
注:重新修改回该值的初始值必须在/etc/sysctl.conf中修改net.ipv4.tcp_tw_recycle = 0 然后再执行命令:sysctl -p之后才能生效。不能是指注释原来的那些参数后执行sysctl -p后就能改变的。当时一直急着恢复故障,未能冷静分析原因及未能正确修改此参数。切换机器后游戏恢复正常。然后再查资料好好理解上面参数的含义及如何修改。
2、最先修改该值是因为机器负载过高,认为可以通过修改这些参数来达到优化的效果,处理过程中因为同一用户在不同地区可以登陆,认为是网络问题引起。另外对 net.ipv4.tcp_fin_timeout 参数值进行了增大,误以为可以通过增大这个值来既能使用户登录,也可以使机器负载不高。实际是不行的。
3、我们在一些高并发的 WebServer上,为了端口能够快速回收,打开了 tcp_tw_reccycle ,而在关闭 tcp_tw_reccycle 的时候,kernal 是不会检查对端机器的包的时间戳的;打开了 tcp_tw_reccycle 了,就会检查时间戳,很不幸移动的cmwap发来的包的时间戳是乱跳的,所以我方的就把带了“倒退”的时间戳的包当作是“recycle的tw连接的重传数据,不是新的请求”,于是丢掉不回包,造成大量丢包。
tcp_tw_recycle参数引发的故障的更多相关文章
- 【经验总结】tcp_tw_recycle参数引发的故障
tcp_tw_recycle参数引发的故障 By Eric 故障描述: 2010年9月7日,新上线的手机游戏论坛有部分地区用户反应登陆游戏时出现不能登陆或登陆超时等情况,观察用户同时在线数量开始下降情 ...
- NAT网络下tcp_tw_recycle参数引起的故障
记录一次阿里云服务器故障排查思路 公司网络是nat 环境 问题: 同一个服务有两台服务器 172.19.19.252 172.19.19.187 两台服务器 要连node5 发现172.19.19.2 ...
- tcp_tw_recycle参数引发的数据库连接异常
[问题描述] 开发反馈有个应用在后端数据库某次计划性重启后经常会出现数据库连接异常问题,通过监控系统的埋点数据,发现应用连接数据库异常有两类表现: 其一:连接超时 131148.00ms To ...
- tcp_tw_recycle参数引发的系统问题
文章转载自: https://blog.csdn.net/zhuyiquan/article/details/68925707
- 不要在linux上启用net.ipv4.tcp_tw_recycle参数
不要在linux上启用net.ipv4.tcp_tw_recycle参数 发布于 2015/07/27 莿鸟栖草堂 本文为翻译英文BLOG<Coping with the TCP TIME-WA ...
- 一个purge参数引发的惨案——从线上hbase数据被删事故说起
在写这篇blog前,我的心情久久不能平静,虽然明白运维工作如履薄冰,但没有料到这么一个细小的疏漏会带来如此严重的灾难.这是一起其他公司误用puppet参数引发的事故,而且这个参数我也曾被“坑过”. ...
- 使用可变对象作为python函数默认参数引发的问题
写python的都知道,python函数或者方法可以使用默认参数,比如 1 def foo(arg=None): 2 print(arg) 3 4 foo() 5 6 foo("hello ...
- 网络优化之net.ipv4.tcp_tw_recycle参数
不要在linux上启用net.ipv4.tcp_tw_recycle参数 2015/07/27 CFC4N 本文为翻译英文BLOG<Coping with the TCP TIME-WAIT ...
- 【故障公告】数据库服务器 CPU 近 100% 引发的故障
抱歉,今天上午 10:48 ~ 10:33 期间,我们所使用的数据库服务(阿里云 RDS 实例 SQL Server 2016 标准版)又出现了 CPU 近 100% 问题,由此给您带来麻烦,请您谅解 ...
随机推荐
- Solution -「最大权闭合子图」做题随笔
T1 小 M 的作物 先从简化题目入手,考虑先去掉 \(c\) 的额外收益.然后尝试将所有作物种在 \(B\), 则目前得到了 \(\sum \limits_{i = 1} ^n b_i\) 的收益. ...
- 基于ABP实现DDD--仓储实践
由于软件系统中可能有着不同的数据库,不同的ORM,仓储思想的本质是解耦它们.在ABP中具体的实现仓储接口定义在领域层,实现在基础设施层.仓储接口被领域层(比如领域服务)和应用层用来访问数据库,操作 ...
- 10 Dubbo 配置实战
Dubbo 配置实战 快速入门 dubbo 建议看这篇文章是在学习了快速入门 dubbo 那篇文章的基础上来学习 配置说明 文档地址 https://dubbo.apache.org/zh/index ...
- Scala(二)IO流 读取文件和保存文件
package com.shujia.scala import java.io.{BufferedReader, FileReader, FileWriter} import scala.io.{Bu ...
- Apache DolphinScheduler 使用文档(4/8):软件部署
本文章经授权转载,原文链接: https://blog.csdn.net/MiaoSO/article/details/104770720 目录 4. 软件部署 4.1 为 dolphinschedu ...
- kubernetes网络模型
Overview 本文将探讨Kubernetes中的网络模型,以及对各种网络模型进行分析. Underlay Network Model 什么是Underlay Network 底层网络 Underl ...
- Excel 工作簿、工作表与单元格
工作簿 工作簿是指在 Excel 中用来存储并处理数据的文件,其扩展名是.xlsx.工作簿是由工作表组成的,每一个工作簿都可以包含一个或多个工作表,默认为 3 个工作表.Excel 2007 之前的版 ...
- 刷题记录:Codeforces Round #719 (Div. 3)
Codeforces Round #719 (Div. 3) 20210703.网址:https://codeforces.com/contest/1520. 没错,我是个做div3的蒟蒻-- A 大 ...
- [NOI P模拟赛] 传统艺能(子序列自动机、矩阵乘法,线段树)
(2:00)OID:"完了,蓝屏了!"(代码全消失) 众人欢呼 OID:开机,"原题测试--" (30min later)OID 开始传统艺能: " ...
- 座位安排(欧拉回路,高斯消元,bitset)
题面 由于旋转大师 F r e n c h \rm French French 的离去, A r e x t r e \rm Arextre Arextre 光荣地承担了给全班换座位的重任. 由于这是 ...