找回密码
 立即注册
Qt开源社区 门户 查看内容

linux网络问题思路浅析(一)

2019-9-14 11:50| 发布者: admin| 查看: 369| 评论: 0

摘要: 网络问题非常复杂,我的思路也只有一个大概,先挖个坑,想写多少就写多少,看我心情了。学习一定要归纳总结,分析网络问题就像解数学题,一定要有方向和思路,不要一上来就各种乱套公式,乱用命令。其实可以从以下几 ...
网络问题非常复杂,我的思路也只有一个大概,先挖个坑,想写多少就写多少,看我心情了。学习一定要归纳总结,分析网络问题就像解数学题,一定要有方向和思路,不要一上来就各种乱套公式,乱用命令。其实可以从以下几点出发,也是衡量网络的指标,基本上问题也都在这些范围内。
带宽,链路最大传输速率,单位b/s,所以我们常用的宽带速度都要除以8才是实际的速率。

吞吐量,实际的速率,单位b/s,就是我们明明是100M的宽带,但下载速度可能只有1M/s,这个就吞吐量。

延时,这个不同场景有不同的具体定义,简单理解,就是建立连接响应所需要的时间。比如常见的RTT(一个数据包的往返时间)。

PPS,以网络包为单位的传输速率,通常表示网络转发能力。

网络连通性,丢包率,并发连接数等等其他指标。

网络连通性

网络有问题第一个想到的一定是ping,看网络是否连通,是否存在延时,丢包等。当然这个命令主要用来判断是否连通的,但是ping不通也不代表网络不通,因为绝大多数服务器都是禁ping的。这里可以使用telnet,nc,hping3等测试端口是否连通来判断当前网络是否连通。
    [root@aikeke ~]# nc -zv www.baidu.com 80Ncat: Version 7.50 ( https://nmap.org/ncat )Ncat: Connected to 39.156.66.14:80.Ncat: 0 bytes sent, 0 bytes received in 0.09 seconds.套接字信息可以使用ss命令查看网络协议栈的信息,基本上都是用来排查万恶的tcp问题的,比如常见的time_wait问题等等。
      #!/bin/bash#tcp套接字监控脚本#Usage:LISTEN,SYN-SENT,SYN-RECV,ESTAB,FIN-WAIT-1,FIN-WAIT-2,TIME-WAIT,CLOSE-WAIT,LAST-ACK,CLOSED,CLOSINGtcp_status(){ ss -ant|awk 'NR>1{++b[$1]} END {for (a in b) print a,b[a]}'}main(){ num=`tcp_status|grep "$1"|awk '{print $2}'` [ -z "$num" ] && echo 0 || echo$num}main $1ss命令有个Q要提一下,之前我一直简单的认为是接收发送的队列长度,没有深入去看。其实没有那么简单。
        [aikeke@keke2 ~]$ ss -lntState Recv-Q Send-Q Peer Address:Port LISTEN 0128 *:*Send-Q表示listen端口上的全连接队列最大为多少,Recv-Q为全连接队列当前使用了多少。tcp三次握手过程中,有两个队列,syns queue(半连接),accept queue(全连接)。server收到syn的时候会先放入半连接队列然后回复一个syn+ack,当收到ack的时候,如果全连接队列没满,才会从半连接中拿出放入全连接。如果满了会按照tcp_abort_on_overflow处理,0直接丢掉,1是reset。半连接取决于tcp_max_syn_backlog,全连接取决于net.core.somaxconn,所以可以按照实际需求修改这两个参数提高队列数,优化tcp。多说一句,可以使用netstat -s | egrep "listen" 去看队列的溢出统计数据,如果一直在增加,说明全队列一定满了。(可以看tcp_ipv4.c)网络吞吐和PPS可以使用sar命令,如下图,可以看到当前接收发送的pps。
          [aikeke@keke2 ~]$ sar -n DEV 1Linux 3.10.0-327.36.1.el7.x86_64 (keke2)   09/13/2019   _x86_64_  (4 CPU)01:37:03 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s01:37:04 PM eth0 341.00 231.00 81.89 101.78 0.00 0.00 0.0001:37:04 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
          rxcmp/s 和 txcmp/s 分别是接收和发送的压缩数据包数,包/s。

          看流量常用的工具还有iftop和nethogs。

          先写这么多了,更多的网络问题和工具下次在具体分析。



          部分内容来自网络,如有侵权请联系作者删除。


          ----------------------------------------------------------------------------------------------------------------------
          我们尊重原创,也注重分享,文章来源于微信公众号:爱可可的运维笔记,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
          ----------------------------------------------------------------------------------------------------------------------

          鲜花

          握手

          雷人

          路过

          鸡蛋
          
          公告
          可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了