ESFramework 经验分享 -- 故障排查:服务器端口telnet失败

        telnet命令的主要作用是与目标端口进行TCP连接(即完成TCP三次握手)。

        当服务端启动后,但是telnet其监听的端口,却失败了。或者,当服务端运行了一段时间后,突然其监听的端口telnet不通了。当类似这样的telnet失败的情况出现时,都可以按照如下方面进行排查:

1.观察一下服务端进程的CPU和内存是否有异常。

       比如,当CPU持续在100%时,就有可能导致来自客户端的TCP连接请求被丢弃或无暇处理。 

2.端口监听器是否运行正常?

        可以通过IRapidServerEngine的Advanced属性的GetPortListenerState方法来获取端口监听器的状态,该方法返回一个PortListenerState对象,其包含5个属性:

(1)IsAuthorized:服务端实例是否被授权。

(2)IsMaxConnection:是否达到了最大连接数的限制。比如,某些授权的服务端实例只允许最多100个客户端同时在线。

(3)IsListening:是否正在监听端口。如果未授权,或达到了最大连接数限制,则将会停止监听端口。

(4)LastDetectTime:最后一次检测TCP连接队列(已完成OS底层的三次握手,但尚未被ESFramework提取的TCP连接存放于该队列中)的时间。 

(5)PendingInQueue :队列中是否有待提取的TCP连接。(即 TcpListener 的 Pending()方法的返回值)

----------------------------------------------------------------------------------------------------------------

        如果上述两点都正常,则接下来,需要专业的运维人员或网管人当员参与进来协助排查。

3.在当前服务器上执行telnet命令,看能否连接成功?

        如果能连接成功,至少表明本机的TCP握手请求是能正常地被接收和处理的。 

4.在服务器上执行netstat命令

          netstat是一个非常有用的查看端口状态的命令,执行netstat命令后,请注意查看以下信息:

(1)目标端口是否处于监听状态?

(2)目标端口上是否存在已成功建立的TCP连接(ESTABLISHED)?其数量是多少?

(3)是否存在半开连接(SYN_RECV)?其数量是多少?

(4)是否存在等待关闭的连接(TIME_WAIT)?其数量是多少?

          这里,最有可能的原因是半开连接数达到最大限制,导致windows系统丢弃后续的TCP连接请求。 要查看或修改半开连接数限制,请查看本文最后的附录说明。

5.TCP三次握手是否正常?

         对于一些奇怪现象的跟踪与分析,数据抓包工具是不可缺少的。

         在服务器上将抓包工具(如Sniffer)运行起来,然后在其他的电脑上telnet该服务器的目标端口,通过抓包工具观察目标端口上TCP三次握手的过程是否正常:

(1)目标端口是否收到了来自客户端的SYN请求?

(2)目标端口有回复SYN_ACK给客户端?

(3)目标端口有收到来自客户端的第三次握手?

         只有当TCP三次握手顺利完成后,windows底层才会将建立好的TCP连接放入队列中,提交给上层的应用程序。

6. 技术顾问服务

        如果通过以上步骤的排查,还是找不到问题所在,那我们可以为您提供技术顾问性质的有偿服务,该服务将针对您项目的实际情况(我们会深入了解服务器部署的网络拓扑结构、防火墙、路由器的规则设定、网路安全监控软硬件等相关的详细信息),提供专业的更具针对性的排查指导和解决方案。

 

附:如何查看与修改半开连接数限制值

执行regedit命令,打开注册表,按照顺序依次打开一下选项: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters

在窗口右侧选项栏内找到这个EnableConnectionRateLimiting键值。

(1)如果没有此键:表示系统没有半开连接数的限制。

(2)键值为0:也表示系统没有半开连接数的限制。

(3)键值为一个正数:即半开连接数的限制值。可以修改它。

 

上一篇:ESFramework 开发手册与使用技巧

----------------------------------------------------------------------------------------------------------------------------   

下载免费版本的ESFramework 以及 demo源码 

Q Q:168757008 

 

导航

首页

官方网站

立即咨询 

站内搜索

ESFramework 通信框架

详细说明

SDK下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK下载

OMCS FAQ

版本变更记录

OrayTalk 企业即时通讯系统

详细说明

客户端下载

傲瑞实用组件

SDK下载

NPush 消息推送组件

StriveEngine 轻量级的通信引擎

MFile 语音视频录制组件

MCapture 语音视频采集组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

傲瑞组件 FAQ

授权

授权流程

产品授权说明

产品选购指南

授权SDK使用说明

其它

SDK使用技巧

联系我们

电话:027-87638960

Q Q:168757008

邮件:master@oraycn.com