Linux 网卡 RX 队列和软中断堆积导致丢包的排查与治理实践
## 适用场景 线上服务出现间歇性超时、请求延迟抖动、连接偶发重置,但应用日志没有明显报错,CPU 总使用率也不高。进一步观察会发现某几颗 CPU 的 `si` 软中断占用很高,网卡统计里存在 `rx_dropped`、`rx_missed_errors` 或 ring buffer 溢出。这类问题常见于高并发网关、
技术笔记、项目复盘、阅读摘录和问题清单。
## 适用场景 线上服务出现间歇性超时、请求延迟抖动、连接偶发重置,但应用日志没有明显报错,CPU 总使用率也不高。进一步观察会发现某几颗 CPU 的 `si` 软中断占用很高,网卡统计里存在 `rx_dropped`、`rx_missed_errors` 或 ring buffer 溢出。这类问题常见于高并发网关、
## 适用场景 本文适用于 Nginx 作为反向代理或网关时,用户访问接口偶发或持续返回 `504 Gateway Time-out`,错误日志中出现 `upstream timed out`、`while reading response header from upstream` 等信息的场景。 典型架构如下:
## 适用场景 这篇文章适用于线上服务出现“偶发连接超时、重试后成功、服务 CPU 不高但新连接建立慢”的问题,尤其是 Nginx、网关、Java/Python Web 服务、RPC 服务或四层代理在流量突增时出现以下现象: - 客户端报 `connection timed out`、`connect timeou
## 适用场景 本文适用于线上 MySQL 出现以下情况: - 接口偶发变慢,慢查询集中在 `ORDER BY`、`GROUP BY`、`DISTINCT`、复杂分页或报表 SQL 上。 - 数据库实例的磁盘使用率短时间上涨,过一段时间又自动回落。 - `tmpdir` 所在分区 IO 使用率升高,甚至出现 `No
## 适用场景 这篇文章适用于 Pod 一直停留在 `Pending`、`ErrImagePull` 或 `ImagePullBackOff`,业务发布后没有新实例可用的场景。常见环境包括自建 Kubernetes、云厂商托管集群、私有镜像仓库 Harbor、阿里云/腾讯云镜像仓库,以及通过 CI/CD 自动更新镜像
## 适用场景 本文适用于线上 Redis 开启 AOF 持久化后,业务在某些时间段出现接口变慢、写入超时、Redis `used_cpu_sys` 升高、磁盘 `await` 或 `util` 接近打满的场景。常见部署形态包括单机 Redis、主从 Redis、哨兵架构,以及运行在云主机本地盘或云盘上的 Redis
## 适用场景 本文适用于 Linux 主机、NAT 网关、Docker 宿主机、Kubernetes Node 或开启防火墙规则的服务器。当业务出现偶发连接超时、DNS 查询失败、服务间调用间歇性失败,而 CPU、内存、磁盘都看起来正常时,可以把 conntrack 连接跟踪表作为重点排查对象。 典型环境包括:
## 适用场景 这类问题常见于 Ubuntu、Debian 或启用了 `systemd-resolved` 的 Linux 主机:宿主机可以正常解析域名,但 Docker 容器内访问外部域名失败,表现为应用请求超时、包管理器无法安装依赖、容器启动后健康检查一直失败。 典型环境包括: - 宿主机使用 Docker
## 适用场景 这篇文章适用于 Nginx 接入 Filebeat、Logstash、Elasticsearch 或其他日志平台后,出现下面几类问题的场景: - Nginx 访问日志本地已经写入,但日志平台几分钟后才看到。 - 部分时间段日志缺失,业务同学按 trace id 或客户端 IP 查不到请求。 - 日志
## 适用场景 本文适用于 Kubernetes 中业务 Pod 间歇性进入 `CrashLoopBackOff`、`RestartCount` 持续增长、服务短时间不可用,但应用日志里又看不到明确业务异常的场景。常见于 Spring Boot、Django、Go HTTP 服务、Node.js 服务等 Web 应用