TIME_WAIT和CLOSE_WAIT状态区别

TIME_WAIT和CLOSE_WAIT状态区别,第1张

在服务器的日常维护过程中,会经常用到下面的命令:

它会显示例如下面的信息:

常用的三个状态是: ESTABLISHED 表示正在通信, TIME_WAIT 表示主动关闭, CLOSE_WAIT 表示被动关闭。

TIME_WAIT

CLOSE_WAIT

为什么需要 TIME_WAIT 状态?

为什么 TIME_WAIT 状态需要保持 2MSL 这么长的时间?

如果服务器出了异常,百分之八九十都是下面两种情况:

改下/etc/sysctlconf的tpc回收,还有keepalive
优化Linux下的内核TCP参数以提高系统性能,可以参考下>前段时间遇到线上报大量的锁等待的错误
如下图

首先需要说明一下锁等待错误是怎么产生的官方的错误编码表有这个的相关解释
工欲善其事必先利其器你得有好的工具帮助到你由于种种原因,线上的监控不是那么完备,导致报错解决起来比较困难所以自己有几件趁手的工具就很重要了这里便说一下我这次解决问题用到的
1查询锁等待的语句,

具体字段解释百度
2本地开发环境配置显示执行sql
这样你可以看到一个接口执行了哪些sql方便你去快速查看原因
3本地mysql服务端配置显示执行sql
可以参考这位大佬的配置
如何配置mysql 执行log
4修改超时等待的值,就是 去设置 innodb_lock_wait_timeout这个变量的值,设置的短一点就会更容易复现因为线上的是会产生大量事务的,而你本地服务器没有线上那种很忙的情况,可以压测本地的mysql,也可以通过设置更短的时间来快速报错
5本地最好把日志级别调低,方便看到更详细的错误
其实自己解决也花了不少时间,有些事情还是想的太过于深入最后发现对自己解决问题没什么用,应该也给自己设置一个思考超时时间和行动超时时间,比如都设置半个小时,如果没有任何进展要么去尝试其他的,要么去短暂的休息一下,说不定你会产生更好的思路


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10669281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存