千家信息网

Thrift第八课 恶劣环境异常

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,1)中间由于长时间没有进行交互,信道被路由器回收客户端没有检测到网络连接断线,服务器端异常捕获。日志输出如下:TSocket::read() recv() errno = 10060错误查找10060
千家信息网最后更新 2026年11月02日Thrift第八课 恶劣环境异常

1)中间由于长时间没有进行交互,信道被路由器回收

客户端没有检测到网络连接断线,服务器端异常捕获。日志输出如下:TSocket::read() recv() errno = 10060


错误查找10060

由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败


知识扩展

TCP不提供及时连接丢失通知,对于实时保证TCP连接正常的应用程序,需要实现心跳。Thrift基于TCP连接,但不是真正的长连接,只能应用于系统内部稳定高速的网络环境。为了实现真正的长连接,必须要手动在应用程序中添加心跳包,目前采用的方式是客户端定时发送一个心跳包,然后服务器收到之后直接返回该心跳包,客户端在10秒内没有收到心跳包,说明连接断开,重新连接。


2)网络异常

服务器端的系统出现大量未释放的网络连接。用netstat -na查看,连接状态为CLOSE_WAIT

这个问题主要因为TCP的结束流程未走完,造成连接未释放。现设客户端主动断开连接,流程如下

Client 消息 Server
close()
------ FIN ------->
FIN_WAIT1 CLOSE_WAIT
<----- ACK -------
FIN_WAIT2
close()
<------ FIN ------
TIME_WAIT LAST_ACK
------ ACK ------->
CLOSED
CLOSED

如上图所示,由于Server的Socket在客户端已经关闭时而没有调用关闭,造成服务器端的连接处在"挂起"状态,而客户端则处在等待应答的状态上。此问题的典型特征是:一端处于FIN_WAIT2 ,而另一端处于CLOSE_WAIT.

核心原因是Thrift在刷新数据的时候,抛出异常,传输层无法调用关闭函数,套接字无法关闭,因此出现CLOSE_WAIT状态



客户 客户端 服务器 状态 网络 服务 应用 一端 处在 应用程序 流程 程序 端的 系统 问题 环境 主动 上图 主机 于连 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技战争 深圳互联网科技公司 唐信互联网科技 碳银互联网科技 汇久创客互联网科技 润盈互联网科技 互联网科技公司做什么 顺网科技2021年互联网排名 华中科技有哪些互联网大佬 老年人脱离互联网科技的作文 现代科技和互联网有关系吗 银川新华互联网科技职业技术培训学校图片 长沙茂晟互联网科技有限公司 元气玛特互联网科技公司是外包吗 黑科技 体验场景 互联网大会 郑州欣桑互联网科技有限公司 互联网科技企业商标注意事项 互联网公司属于科技吗 互联网领先科技活动 株洲百竞科技的互联网营销顾问 科技互联网 互联网科技金融 睿民互联网科技 太原新华互联网科技学校怎么样 青岛中康互联网医疗科技有限公司 成都铂石互联网科技做什么的 彤创互联网科技有限公司 健康食品互联网创新科技园项目 威龙国际互联网科技公司 济南小医互联网科技有限公司招聘
0