阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Netstat命令查看Web服务器并发请求连接数

145次阅读
没有评论

共计 1745 个字符,预计需要花费 5 分钟才能阅读完成。

查看服务器 TCP 连接状态

[root@Nginx-Server-98 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(k in S) print k,S[k]}'

# 关闭等待的请求数据
CLOSE_WAIT 26
# 正党数据传输状态
ESTABLISHED 36
FIN_WAIT2 1
# 等待超时结束的请求数
TIME_WAIT 386

说明

1. netstat 常见参数

  • -a (all) 显示所有选项,默认不显示 LISTEN 相关
  • -t (tcp) 仅显示 tcp 相关选项
  • -u (udp) 仅显示 udp 相关选项
  • -n 拒绝显示别名,能显示数字的全部转化成数字。
  • -l 仅列出有在 Listen (监听) 的服務状态
  • -p 显示建立相关链接的程序名
  • -r 显示路由信息,路由表
  • -e 显示扩展信息,例如 uid 等
  • -s 按各个协议进行统计
  • -c 每隔一个固定时间,执行该 netstat 命令。

2. awk 常用内置变量

  • ARGC 命令行参数个数
  • ARGV 命令行参数排列
  • ENVIRON 支持队列中系统环境变量的使用
  • FILENAME 浏览的文件名
  • FNR 浏览文件的记录数
  • FS 设置输入域分隔符,等价于命令行 - F 选项
  • NF 浏览记录的域的个数
  • NR 已读的记录数
  • OFS 输出域分隔符
  • ORS 输出记录分隔符
  • RS 控制记录分隔符

TCP 状态转换

使用 Netstat 命令查看 Web 服务器并发请求连接数

TCP 状态转换图

TCP 状态说明:

  • CLOSED 无连接是活动的或正在进行
  • LISTEN 服务器在等待进入呼叫
  • SYN_RECV 一个连接请求已经到达,等待确认
  • SYN_SENT 应用已经开始,打开一个连接
  • ESTABLISHED 正常数据传输状态
  • FIN_WAIT1 应用说它已经完成
  • FIN_WAIT2 另一边已同意释放
  • ITMED_WAIT 等待所有分组死掉
  • CLOSING 两边同时尝试关闭
  • TIME_WAIT 另一边已初始化一个释放
  • LAST_ACK 等待所有分组死掉

状态转换过程

  1. CLOSED: 起始点,在超时或者连接关闭时候进入此状态。
  2. LISTEN:Server 端在等待连接过来时候的状态,Server 端为此要调用 socket,bind,listen 函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。
  3. SYN_SENT: 客户端发起连接,发送 SYN 给服务器端。如果服务器端不能连接,则直接进入 CLOSED 状态。
  4. SYN_RCVD: 跟 3 对应,服务器端接受客户端的 SYN 请求,服务器端由 LISTEN 状态进入 SYN_RCVD 状态。同时服务器端要回应一个 ACK,同时发送一个 SYN 给客户端;另外一种情况,客户端在发起 SYN 的同时接收到服务器端得 SYN 请求,客户端就会由 SYN_SENT 到 SYN_RCVD 状态。
  5. ESTABLISHED: 服务器端和客户端在完成 3 次握手进入状态,说明已经可以开始传输数据了。
  6. FIN_WAIT_1: 主动关闭的一方,由状态 5 进入此状态。具体的动作时发送 FIN 给对方。
  7. FIN_WAIT_2: 主动关闭的一方,接收到对方的 FIN ACK,进入此状态。由此不能再接收对方的数据。但是能够向对方发送数据。
  8. CLOSE_WAIT: 接收到 FIN 以后,被动关闭的一方进入此状态。具体动作时接收到 FIN,同时发送 ACK。
  9. LAST_ACK: 被动关闭的一方,发起关闭请求,由状态 8 进入此状态。具体动作时发送 FIN 给对方,同时在接收到 ACK 时进入 CLOSED 状态。
  10. CLOSING: 两边同时发起关闭请求时,会由 FIN_WAIT_1 进入此状态。具体动作是,接收到 FIN 请求,同时响应一个 ACK。
  11. TIME_WAIT: 最纠结的状态来了。从状态图上可以看出,有 3 个状态可以转化成它,下面将仔细分析:
  • 由 FIN_WAIT_2 进入此状态:在双方不同时发起 FIN 的情况下,主动关闭的一方在完成自身发起的关闭请求后,接收到被动关闭一方的 FIN 后进入的状态。
  • 由 CLOSING 状态进入: 双方同时发起关闭,都做了发起 FIN 的请求,同时接收到了 FIN 并做了 ACK 的情况下,由 CLOSING 状态进入。
  • 由 FIN_WAIT_1 状态进入:同时接受到 FIN(对方发起),ACK(本身发起的 FIN 回应),与 b 的区别在于本身发起的 FIN 回应的 ACK 先于对方的 FIN 请求到达,而 b 是 FIN 先到达。这种情况概率最小。

  本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-11/148403.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1745字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中