随笔-调试-网络问题

【01】服务器网卡性能配置、系统配置

======
  1. 查看网口协商速率:ethtool eth0 # eth0为网口名称
  2. 修改网卡接收与发送硬件缓存区大小: if=eth0; ethtool -G $if tx 4096; ethtool -G $if rx 4096 # 4096 不同网卡值不同 使用ethtool -g eth0获取具体数值
  3. 修改系统udp读写缓存到32M
echo 33554432 > /proc/sys/net/core/rmem_max
echo 33554432 > /proc/sys/net/core/rmem_default
echo 33554432 > /proc/sys/net/core/wmem_max
echo 33554432 > /proc/sys/net/core/wmem_default

【02】测量两点之间的带宽 iperf

======
  1. 使用ethtool确认是否协商为千兆
  2. 使用scp进行实际的打流
dd if=/dev/urandom iflag=fullblock of=test1000m.bin bs=1M count=1024
scp test1000m.bin root@192.168.78.191:~
  1. 或者使用iperf进行实际的打流
服务端:iperf -s -u -p 22345 -i 1
客户端:iperf -c 10.10.2.58 -p 22345 -i 1 -t 60 -b 1000M -u

【03】查看网卡流量 net_stat.sh(/proc/net/dev)

======
#!/bin/bash

deviation=0
if_name=$1

rx_bit=
tx_bit=

[[ -z "$if_name" ]] && {
    echo "usage: $0 [if_name]"
    exit -1
}

function deviation_calc() {
    local sum=0
    local dev_value

    for i in {1..20}; do
        dev_value=0.000000001

        curr_time=$(date +%s.%N)
        dev_value=$(awk 'BEGIN{print "'$curr_time'"+1-"'$(date +%s.%N)'"-"'$dev_value'"}')
        cost_time=$(date +%s.%N)
        cost_time=$(awk 'BEGIN{print "'$cost_time'"-"'$curr_time'"}')

        sum=$(awk 'BEGIN{print "'$sum'"+"'$cost_time'"}')
    done

    dev_value=$(awk 'BEGIN{print "'$sum'"/20}')
    echo $dev_value
}

function net_usage_total() {
    local dev=$1
    local rx_tx

    [[ -z "$dev" ]] && exit -1

    rx_tx=($(awk '/^\s*'$dev':/{print $2,$10}' <<< "$(cat /proc/net/dev)"))

    prev_rx_bit=$rx_bit
    rx_bit=${rx_tx[0]}

    prev_tx_bit=$tx_bit
    tx_bit=${rx_tx[1]}


    [[ -z "$prev_rx_bit" || -z "$prev_tx_bit" ]] && {
        return
    }

    delta_rx=$(bc <<< "($rx_bit-$prev_rx_bit)*8/1024/1024")
    delta_tx=$(bc <<< "($tx_bit-$prev_tx_bit)*8/1024/1024")

    echo "dev=$dev RX: ${delta_rx}Mb   TX: ${delta_tx}Mb"
}

deviation=$(deviation_calc)
echo "deviation: $deviation"

# 网络带宽统计
while true; do
    curr_time=$(date +%s.%N)
    net_usage_total $if_name
    sleep $(awk 'BEGIN{print "'$curr_time'"+1-"'$(date +%s.%N)'"-"'$deviation'"}')
done

【04】查看某IP流量 iftop

iftop -i eth1 -n #然后按 l 输入ip地址

【00】 查看服务器tcp连接数

ss -ntapo | wc -l

【05】NetworkManager 命令行网络配置工具 nmcli

======

参考:https://blog.csdn.net/whatday/article/details/106112714

posted @ 2023-10-16 19:27  LiYanbin  阅读(7)  评论(0编辑  收藏  举报