Linux服务器网卡丢包的解决办法
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,通常情况下,Linux的网卡中断是由一个CPU核心来处理的,当承担高流量的场景下,会出现一些诡异的情况(网卡尚未达到瓶颈,但是却出现丢包的情况)这种时候,我们最好看下网卡中断是不是缺少调优。优化3要点
千家信息网最后更新 2026年10月31日Linux服务器网卡丢包的解决办法
通常情况下,Linux的网卡中断是由一个CPU核心来处理的,当承担高流量的场景下,会出现一些诡异的情况(网卡尚未达到瓶颈,但是却出现丢包的情况)
这种时候,我们最好看下网卡中断是不是缺少调优。
优化3要点:网卡多队列+irq affinity亲缘性设置+关闭irqbalance
目前阿里云官方提供的centos和ubuntu镜像里面,已经自带了优化脚本,内容如下:
centos7的脚本路径在 /usr/sbin/ecs_mq_rps_rfs 具体内容如下:
#!/bin/bash# This is the default setting of networking multiqueue and irq affinity# 1. enable multiqueue if available# 2. irq affinity optimization# 3. stop irqbalance service# set and check multiqueuefunction set_check_multiqueue(){ eth=$1 log_file=$2 queue_num=$(ethtool -l $eth | grep -ia5 'pre-set' | grep -i combined | awk {'print $2'}) if [ $queue_num -gt 1 ]; then # set multiqueue ethtool -L $eth combined $queue_num # check multiqueue setting cur_q_num=$(ethtool -l $eth | grep -iA5 current | grep -i combined | awk {'print $2'}) if [ "X$queue_num" != "X$cur_q_num" ]; then echo "Failed to set $eth queue size to $queue_num" >> $log_file echo "after setting, pre-set queue num: $queue_num , current: $cur_q_num" >> $log_file return 1 else echo "OK. set $eth queue size to $queue_num" >> $log_file fi else echo "only support $queue_num queue; no need to enable multiqueue on $eth" >> $log_file fi}#set irq affinityfunction set_irq_smpaffinity(){ log_file=$1 node_dir=/sys/devices/system/node for i in $(ls -d $node_dir/node*); do i=${i/*node/} done echo "max node :$i" >> $log_file node_cpumax=$(cat /sys/devices/system/node/node${i}/cpulist |awk -F- '{print $NF}') irqs=($(cat /proc/interrupts |grep virtio |grep put | awk -F: '{print $1}')) core=0 for irq in ${irqs[@]};do VEC=$core if [ $VEC -ge 32 ];then let "IDX = $VEC / 32" MASK_FILL="" MASK_ZERO="00000000" for ((i=1; i<=$IDX;i++)) do MASK_FILL="${MASK_FILL},${MASK_ZERO}" done let "VEC -= 32 * $IDX" MASK_TMP=$((1<<$VEC)) MASK=$(printf "%X%s" $MASK_TMP $MASK_FILL) else MASK_TMP=$((1<<$VEC)) MASK=$(printf "%X" $MASK_TMP) fi echo $MASK > /proc/irq/$irq/smp_affinity echo "mask:$MASK, irq:$irq" >> $log_file core=$(((core+1)%(node_cpumax+1))) done}# stop irqbalance servicefunction stop_irqblance(){ log_file=$1 ret=0 if [ "X" != "X$(ps -ef | grep irqbalance | grep -v grep)" ]; then if which systemctl;then systemctl stop irqbalance else service irqbalance stop fi if [ $? -ne 0 ]; then echo "Failed to stop irqbalance" >> $log_file ret=1 fi else echo "OK. irqbalance stoped." >> $log_file fi return $ret}# main logicfunction main(){ ecs_network_log=/var/log/ecs_network_optimization.log ret_value=0 echo "running $0" > $ecs_network_log echo "======== ECS network setting starts $(date +'%Y-%m-%d %H:%M:%S') ========" >> $ecs_network_log # we assume your NIC interface(s) is/are like eth* eth_dirs=$(ls -d /sys/class/net/eth*) if [ "X$eth_dirs" = "X" ]; then echo "ERROR! can not find any ethX in /sys/class/net/ dir." >> $ecs_network_log ret_value=1 fi for i in $eth_dirs do cur_eth=$(basename $i) echo "optimize network performance: current device $cur_eth" >> $ecs_network_log # only optimize virtio_net device driver=$(basename $(readlink $i/device/driver)) if ! echo $driver | grep -q virtio; then echo "ignore device $cur_eth with driver $driver" >> $ecs_network_log continue fi echo "set and check multiqueue on $cur_eth" >> $ecs_network_log set_check_multiqueue $cur_eth $ecs_network_log if [ $? -ne 0 ]; then echo "Failed to set multiqueue on $cur_eth" >> $ecs_network_log ret_value=1 fi done stop_irqblance $ecs_network_log set_irq_smpaffinity $ecs_network_log echo "======== ECS network setting END $(date +'%Y-%m-%d %H:%M:%S') ========" >> $ecs_network_log return $ret_value}# program starts heremainexit $?查询的rps绑定情况的脚本 get_rps.sh
#!/bin/bash# 获取当前rps情况for i in $(ls /sys/class/net/eth0/queues/rx-*/rps_cpus); do echo $i cat $idone
情况
网卡
脚本
内容
诡异
亲缘
场景
官方
尚未
时候
是由
最好
核心
流量
瓶颈
要点
路径
镜像
队列
阿里
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
亿人帮互联网科技有限公司
互联网科技工作委员会副主任毛军
新华互联网科技学校
互联网科技深圳
互联网与科技金融数据
金融科技 互联网金融
高科技与互联网
广州宏创互联网科技
互联网金融科技创新
互联网金融 科技创新
深圳卡尔迅互联网科技有限公司怎么样
中国最先进互联网科技公司
承德科技产业互联网发展
互联网对科技的发展
中国互联网公司排名锤子科技
互联网科技圈年度人物
锡山区互联网智能科技产品供应
互联网风格科技公司名称
广州三三互联网科技有限公司
三亚科技创新互联网基地
高科技互联网
金融科技 互联网金融
奇酷互联网络科技
互联网科技上市公司
剑昆互联网络科技有限公司临桂
移动互联网科技公司
互联网安防科技感
互联网硬科技公司
昆明中奇联合互联网科技
同城互联网络科技