网络性能

 

 

比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看、监控,又包括网络链路上的包转发时延、吞吐量、带宽等指标分析。包括但不限于以下分析工具:

  • ping:测试网络连通性
  • ifconfig:接口配置
  • ip:网络接口统计信息
  • netsat:多种网络栈和接口统计信息
  • ifstat:接口网络流量监控工具
  • netcat:快速构建网络连接
  • tcpdump:抓包工具
  • sar:统计信息历史
  • traceroute:测试网络路由
  • pathchar:确定网络路径特征
  • dtrace:TCP/IP 栈跟踪
  • iperf / netperf / netserver:网络性能测试工具
  • perf 性能分析神器
  • ss 命令

 

ss 命令

http://www.ttlsa.com/linux-command/ss-replace-netstat/

查看重传信息

$ ss -anti | grep -B 1 retrans
打印信息的含义:

struct tcp_info {
    __u8    tcpi_state;           //tcp state: TCP_SYN_SENT,TCP_SYN_RECV,TCP_FIN_WAIT1,TCP_CLOSE etc
    __u8    tcpi_ca_state;     //congestion state:
    __u8    tcpi_retransmits;  //重传数,表示当前待重传的包数,这个值在重传完毕后清零
    __u8    tcpi_probes;        ///* 持续定时器或保活定时器发送且未确认的段数*/
    __u8    tcpi_backoff;        //用来计算持续定时器的下一个设计值的指数退避算法指数,在传送超时是会递增。
    __u8    tcpi_options;        //tcp头部选项是否包含:扩展因子、时间戳、MSS等内容
    __u8    tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; //扩展因子数值
    __u8    tcpi_delivery_rate_app_limited:1;  //限速标志

    __u32    tcpi_rto;        //重传超时时间,这个和RTT有关系,RTT越大,rto越大
    __u32    tcpi_ato;        //用来延时确认的估值,单位为微秒. 
                            //在收到TCP报文时,会根据本次与上次接收的时间间隔来调整改制,在设置延迟确认定时器也会根据
                            //条件修改该值
    __u32    tcpi_snd_mss;    // 本端的MSS
    __u32    tcpi_rcv_mss;    // 对端的MSS

    __u32    tcpi_unacked;    //未确认的数据段数
    __u32    tcpi_sacked;    //2个含义:server端在listen阶段,可以接收连接的数量;收到的SACK报文数量
    __u32    tcpi_lost;        //本端在发送出去被丢失的报文数。重传完成后清零
    __u32    tcpi_retrans;   /* 重传且未确认的数据段数 */
    __u32    tcpi_fackets;

    /* Times. */
    __u32    tcpi_last_data_sent;    //当前时间-最近一个包的发送时间,单位是毫秒
    __u32    tcpi_last_ack_sent;     /* 未使用*/
    __u32    tcpi_last_data_recv;    //当前时间-最近接收数据包的时间,单位是毫秒
    __u32    tcpi_last_ack_recv;     //当前时间-最近接收ack的时间,单位是毫秒

    /* Metrics. */
    __u32    tcpi_pmtu;            /* 最后一次更新的路径MTU */
    __u32    tcpi_rcv_ssthresh;   //当前接收窗口的大小
    __u32    tcpi_rtt;            //smoothed round trip time,微妙    
    __u32    tcpi_rttvar;        //描述RTT的平均偏差,该值越大,说明RTT抖动越大
    __u32    tcpi_snd_ssthresh;  //拥塞控制慢开始阈值
    __u32    tcpi_snd_cwnd;        //拥塞控制窗口大小
    __u32    tcpi_advmss;        //本端的MSS上限
    __u32    tcpi_reordering;    /* 没有丢包时,可以重新排序的数据段数 */

    __u32    tcpi_rcv_rtt;        // 作为接收端,测出的RTT值,单位为微秒. 这个值不是对方计算并传送过来的rtt,而是作为接收端,在没发送数据的情况下
                                // 通过接收发送端发送的数据的情况计算得到的rtt值。在数据发送方,如果不接受数据,这个值一般情况下为0。
    __u32    tcpi_rcv_space;        /* 当前接收缓存的大小 */

    __u32    tcpi_total_retrans;  //统计总重传的包数,持续增长。

    __u64    tcpi_pacing_rate;        //发送速率
    __u64    tcpi_max_pacing_rate;    //最大发送速率,默认是unlimited,可以通过SO_MAX_PACING_RATE来设置
    __u64    tcpi_bytes_acked;    /* RFC4898 tcpEStatsAppHCThruOctetsAcked */
    __u64    tcpi_bytes_received; /* RFC4898 tcpEStatsAppHCThruOctetsReceived */
    __u32    tcpi_segs_out;         /* RFC4898 tcpEStatsPerfSegsOut */
    __u32    tcpi_segs_in;         /* RFC4898 tcpEStatsPerfSegsIn */

    __u32    tcpi_notsent_bytes;
    __u32    tcpi_min_rtt;
    __u32    tcpi_data_segs_in;    /* RFC4898 tcpEStatsDataSegsIn */
    __u32    tcpi_data_segs_out;    /* RFC4898 tcpEStatsDataSegsOut */

    __u64   tcpi_delivery_rate;

    __u64    tcpi_busy_time;      /* Time (usec) busy sending data */
    __u64    tcpi_rwnd_limited;   /* Time (usec) limited by receive window */
    __u64    tcpi_sndbuf_limited; /* Time (usec) limited by send buffer */
};
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值