socket连接突然中断,用linux netstat ano-ano命令查看没有该tcp连接了,如果关闭不应该是close_wait状态么?

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)websocket 长连接 用 netstat 监控的时候,发现 high send-Q ,怎么处理? - V2EX
websocket 长连接 用 netstat 监控的时候,发现 high send-Q ,怎么处理?
12 天前 &helloworld12
目前,主要出现客户端会卡(游戏客户端,玩着玩着,所有报文就能发上去,但是接不到响应)
829 172.19.177.101:88
27.154.155.186:6549
ESTABLISHED
808 172.19.177.101:88
27.154.155.186:6575
ESTABLISHED
798 172.19.177.101:88
27.154.155.186:6551
ESTABLISHED
682 172.19.177.101:88
27.154.155.186:6391
ESTABLISHED
679 172.19.177.101:88
27.154.155.186:6512
ESTABLISHED
593 172.19.177.101:88
27.154.155.186:6520
ESTABLISHED
556 172.19.177.101:88
27.154.155.186:6573
ESTABLISHED
556 172.19.177.101:88
27.154.155.186:6476
ESTABLISHED
547 172.19.177.101:88
27.154.155.186:6489
ESTABLISHED
546 172.19.177.101:88
27.154.155.186:6514
ESTABLISHED
522 172.19.177.101:88
27.154.155.186:6224
ESTABLISHED
386 172.19.177.101:88
27.154.155.186:6527
ESTABLISHED
357 172.19.177.101:88
27.154.155.186:6481
ESTABLISHED
326 172.19.177.101:88
27.154.155.186:6568
ESTABLISHED
323 172.19.177.101:88
27.154.155.186:6537
ESTABLISHED
317 172.19.177.101:88
27.154.155.186:6493
ESTABLISHED
317 172.19.177.101:88
27.154.155.186:6432
ESTABLISHED
317 172.19.177.101:88
27.154.155.186:6386
ESTABLISHED
316 172.19.177.101:88
27.154.155.186:6591
ESTABLISHED
316 172.19.177.101:88
27.154.155.186:6232
ESTABLISHED
315 172.19.177.101:88
27.154.155.186:6594
ESTABLISHED
315 172.19.177.101:88
27.154.155.186:6567
ESTABLISHED
349 次点击所在节点 &
helloworld1212 天前一核 2G 的主机,cpu 差不多 12% 左右
50 个长连接
ryd99412 天前关 nagle 试试
helloworld1212 天前@ 嗯 我试试
第 1 页 / 共 1 页&
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到
上打开本讨论主题的完整版本。
是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
is a community of developers, designers and creative people.用netstat查看网络状态详解
用netstat查看网络状态详解
一、服务器上11种网络连接状态:
&图:TCP的状态机
通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手
注:以下说明最好能结合&图:TCP的状态机&来理解。
SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端已经成功接收所有数据。
FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。
1)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN. /* The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 */
2)、SYN_SENT:客户端通过应用程序调用connect进行active open.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT. /*The socket is actively attempting to establish a connection. 在发送连接请求后等待匹配的连接请求 */
3)、SYN_RECV:服务端应发出ACK确认客户端的SYN,同时自己向客户端发送一个SYN. 之后状态置为SYN_RECV /* A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 */
4)、ESTABLISHED: 代表一个打开的连接,双方可以进行或已经在数据交互了。/* The socket has an established connection. 代表一个打开的连接,数据可以传送给用户 */
5)、FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态./* The socket is closed, and the connection is shutting down. 等待远程TCP的连接中断请求,或先前的连接中断请求的确认 */
6)、CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT. /* The remote end has shut down, waiting for the socket to close. 等待从本地用户发来的连接中断请求 */
7)、FIN_WAIT2:主动关闭端接到ACK后,就进入了FIN-WAIT-2 ./* Connection is closed, and the socket is waiting for a shutdown from the remote end. 从远程TCP等待连接中断请求 */
8)、LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK . /* The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原来发向远程TCP的连接中断请求的确认 */
9)、TIME_WAIT:在主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态。/* The socket is waiting after close to handle packets still in the network.等待足够的时间以确保远程TCP接收到连接中断请求的确认 */
10)、CLOSING: 比较少见./* Both sockets are shut down but we still don&t have all our data sent. 等待远程TCP对连接中断的确认 */
11)、CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束./* The socket is not being used. 没有任何连接状态 */
TIME_WAIT状态的形成只发生在主动关闭连接的一方。
主动关闭方在接收到被动关闭方的FIN请求后,发送成功给对方一个ACK后,将自己的状态由FIN_WAIT2修改为TIME_WAIT,而必须再等2倍 的MSL(Maximum Segment Lifetime,MSL是一个数据报在internetwork中能存在的时间)时间之后双方才能把状态 都改为CLOSED以关闭连接。目前RHEL里保持TIME_WAIT状态的时间为60秒。
当然上述很多TCP状态在系统里都有对应的解释或设置,可见man tcp
二、关于长连接和短连接:
通俗点讲:短连接就是一次TCP请求得到结果后,连接马上结束.而长连接并不马上断开,而一直保持着,直到长连接TIMEOUT(具体程序都有相关参数说明).长连接可以避免不断的进行TCP三次握手和四次挥手.
长连接(keepalive)是需要靠双方不断的发送探测包来维持的,keepalive期间服务端和客户端的TCP连接状态是ESTABLISHED.目前http 1.1版本里默认都是keepalive(1.0版本默认是不keepalive的),ie6/7/8和firefox都默认用的是http 1.1版本了(如何查看当前用的是哪个版本,这里不再赘述)。Apache,java
一个应用至于到底是该使用短连接还是长连接,应该视具体情况而定。一般的应用应该使用长连接。
1、Linux的相关keepalive参数
a、 tcp_keepalive_time - INTEGER
How often TCP sends out keepalive messages when keepalive is enabled.
Default: 2hours.
b、 tcp_keepalive_probes - INTEGER
How many keepalive probes TCP sends out, until it decides that the
connection is broken. Default value: 9.
c、 tcp_keepalive_intvl - INTEGER
How frequently the probes are send out. Multiplied by
tcp_keepalive_probes it is time to kill not responding connection,
after probes started. Default value: 75sec i.e. connection
will be aborted after ~11 minutes of retries.
2、F5负载均衡上的相关参数说明
a、Keep Alive Interval
Specifies, when enabled, how frequently the system sends data over an idle TCP connection, to determine whether the connection is still valid.
Specify: Specifies the interval at which the system sends data over an idle connection, to determine whether the connection is still valid. The default is 1800 milliseconds.
b、Time Wait
Specifies the length of time that a TCP connection remains in the TIME-WAIT state before entering the CLOSED state.
Specify: Specifies the number of milliseconds that a TCP connection can remain in the TIME-WAIT state. The defaultis 2000.
c、Idle Timeout
Specifies the length of time that a connection is idle (has no traffic) before the connection is eligible for deletion.
Specify: Specifies a number of seconds that the TCP connection can remain idle before the system deletes it. The default is 300 seconds.
3、Apache的相关参数说明
以下是Apache/2.0.61版本的默认参数和说明
a、KeepAlive:
default On.Whether or not to allow persistent connections (more than
one request per connection). Set to &Off& to deactivate.
b、MaxKeepAliveRequests:
default 100.The maximum number of requests to allow
during a persistent connection. Set to 0 to allow an unlimited amount.
We recommend you leave this number high, for maximum performance.
c、KeepAliveTimeout:
default 15. Number of seconds to wait for the next request from the
same client on the same connection.DOS命令之netstat命令详解_百度经验
&&&&&&&&&电脑软件DOS命令之netstat命令详解听语音
百度经验:jingyan.baidu.cometstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知有哪些网络连接正在运作。[1] 使用时如果不带参数,netstat显示活动的 TCP 连接。百度经验:jingyan.baidu.comdos命令窗口百度经验:jingyan.baidu.com1netstat命令常用参数解释-a 显示所有socket,包括正在监听的。  -c 每隔1秒就重新显示一遍,直到用户中断它。  -i 显示所有网络接口的信息,格式“netstat -i”。  -n 以网络IP地址代替名称,显示出网络连接情形。  -r显示核心路由表,格式同“route -e”。  -t 显示TCP协议的连接情况  -u 显示UDP协议的连接情况。  -v 显示正在进行的工作。  -p 显示建立相关连接的程序名和PID。  -b 显示在创建每个连接或侦听端口时涉及的可执行程序。  -e 显示以太网统计。此选项可以与 -s 选项结合使用。  -f 显示外部地址的完全限定域名(FQDN)。  -o 显示太网统计信息(timers)。  -s 显示每个协议的统计。  -x 显示 NetworkDirect 连接、侦听器和共享端点。  -y 显示所有连接的 TCP 连接模板。无法与其他选项结合使用。2netstat命令中常用的参数是-a和-r。下面演示netstat -a 命令 查看所有开放端口 如图所示3netstat -a 命令演示,查看本地ip地址子网掩码等如图所示END经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。投票(1)已投票(1)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验00103热门杂志第1期你不知道的iPad技巧3714次分享第1期win7电脑那些事6544次分享第2期新人玩转百度经验1371次分享第1期Win8.1实用小技巧2628次分享第1期小白装大神1870次分享◆请扫描分享到朋友圈

我要回帖

更多关于 netstat ano grep 的文章

 

随机推荐