首页主机资讯Linux dropped最佳实践

Linux dropped最佳实践

时间2025-11-26 10:03:03发布访客分类主机资讯浏览1136
导读:Linux dropped 最佳实践 一 概念与判定 在 Linux 中,dropped 常见于两类场景: 网络层面:接口统计中的 RX/TX dropped,以及协议栈统计中的 UDP receive buffer errors 等。...

Linux dropped 最佳实践

一 概念与判定

  • 在 Linux 中,dropped 常见于两类场景:
    • 网络层面:接口统计中的 RX/TX dropped,以及协议栈统计中的 UDP receive buffer errors 等。
    • 文件/数据库层面:如 MySQL 执行 DROP TABLE 时因大文件删除导致长时间阻塞或 I/O 抖动。
  • 快速判定要点:
    • 网络接口层:使用 ip -s link showifconfignetstat -i 查看是否有持续增长的 dropped/errors
    • 协议栈层:使用 netstat -s -u(UDP)观察 packet receive errorsreceive buffer errors 的增长趋势。
    • 网卡驱动/硬件层:使用 ethtool -S 检查 rx_errors/rx_missed_errors/rx_fifo_errors 等;必要时用 ethtool -g/-G 调整 ring buffer
    • 应用层/数据库:如 MySQL 删除超大 .ibd 文件时出现长时间卡顿,属于“删除路径”上的阻塞而非网络 dropped。

二 网络 dropped 预防与优化

  • 基线健康与容量规划
    • 核查物理链路与设备:网线、网卡、交换机端口状态与日志;必要时更换硬件或调整上联。
    • 监控连接与负载:用 ss -snetstat 观察 ESTABLISHED/TIME_WAIT/CLOSE_WAIT 规模,避免连接风暴。
    • 路由与防火墙:用 ip routeiptables/firewalld 检查异常规则、黑洞路由或策略导致丢包。
  • 驱动与内核
    • 保持 网卡驱动内核 为稳定新版本,修复已知驱动/栈问题。
  • 缓冲区与队列调优(示例为 sysctl 与 ethtool)
    • 增加套接字/内核缓冲区上限,缓解突发流量下的丢包:
      • sysctl -w net.core.rmem_max=16777216
      • sysctl -w net.core.wmem_max=16777216
    • 适度开启 TCP 快速打开(适用于短连接高并发场景):
      • sysctl -w net.ipv4.tcp_tw_reuse=1
    • 调整网卡 ring buffer,降低 rx_missed_errors 风险:
      • 查看:ethtool -g eth0
      • 调整:ethtool -G eth0 rx 8192(按实际值阶梯式调优)
  • 传输层与应用层
    • 结合业务 RTT/带宽设置合理的 TCP 窗口重传参数,避免不必要重传与队头阻塞。
    • UDP 服务,合理设置应用层 接收缓冲速率限制,减少内核 receive buffer errors
  • 变更与验证
    • 调优前备份现有配置;变更后在同等负载下复核 dropped/errors 指标与 P95/P99 延迟。

三 网络 dropped 快速排查路径

  • 分层定位思路
    • 物理/数据链路:链路灯态、对端设备日志、更换网线/端口/网卡排除硬件问题。
    • 接口统计:ip -s link、ifconfig、netstat -i 观察 dropped/errors 是否持续增长。
    • 驱动/硬件:ethtool -S 检查 rx_errors/rx_missed_errors/rx_fifo_errors;必要时增大 ring buffer
    • 协议栈与应用:netstat -s -u 检查 UDP receive buffer errors;用 tcpdump 抓包确认丢包发生在 网卡/驱动/内核/应用 哪个环节。
    • 路由与安全策略:ip route、iptables/firewalld 排查策略与黑洞路由。
  • 典型现象与对策
    • UDP 有错误且 receive buffer errors 增长:增大应用/内核接收缓冲,或在应用侧限流与背压。
    • ethtool -S 显示 rx_missed_errors 增长:增大 ring buffer,并检查中断绑定/CPU 负载均衡。
    • ping 正常但部分连接超时:抓包定位 SYN 无响应或重传,排查 backlog/连接表/防火墙 瓶颈。

四 大表或超大文件删除的 drop 优化

  • 场景与风险
    • MySQL 删除含 100GB+ .ibd 的大表时,直接 DROP 会触发大量磁盘 IO,导致长时间阻塞与业务抖动。
  • 推荐做法
    • 利用 硬链接.ibd 文件多一个引用,使“删除表名”这一步几乎瞬时完成(仅删除目录项),随后再异步清理物理文件:
      • ln user.ibd user.ibd.bak
      • DROP TABLE 快速返回
      • 通过 truncate 逐步缩小 user.ibd.bak(如从 100G 每次递减 10G 并 sleep 2s),最后 rm 删除
    • 操作建议
      • 选择业务低峰期执行,避免影响在线业务
      • 全程监控 IO/负载,确保有回滚与可观测性
      • 完成后校验空间释放与数据一致性

五 监控 备份与变更管理

  • 监控与告警
    • 持续采集并告警 接口 dropped/errorsUDP receive buffer errorsTCP 重传/超时连接数 等关键指标,结合 P95/P99 延迟 与业务 SLO。
  • 备份与恢复
    • 采用 完全备份 + 增量备份自动化脚本 + 定时任务,并定期校验备份可用性与完整性;关键系统引入专业工具(如 Bacula/Amanda/Backupninja)。
  • 变更与回滚
    • 任何 sysctl/ethtool 等内核/驱动参数调整前先备份配置与基线指标;变更后灰度观察并保留回滚方案。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux dropped最佳实践
本文地址: https://pptw.com/jishu/756433.html
Linux dropped案例研究 Linux dropped性能测试

游客 回复需填写必要信息