CentOS延迟怎么解决
小樊
32
2025-12-09 18:29:30
CentOS 延迟定位与优化清单
一、先快速定位延迟来源
- 明确是系统命令卡顿、SSH 登录慢、应用访问慢还是网络链路慢,按场景用对应工具验证:
- 系统命令卡顿:用 top、free -m、df -h、iostat -x 1 检查 CPU、内存、磁盘 IO、磁盘空间 是否异常。
- SSH 登录慢:执行 ssh -vvv 目标IP 观察卡在哪一阶段(如 GSSAPI、DNS 反查)。
- 应用访问慢:用 curl -w 打印各阶段耗时,定位是 DNS 解析、TCP 建连 还是 服务端处理 慢。
- DNS 解析慢:用 time host $(hostname)、time dig $(hostname) 测试解析耗时;必要时用 strace -f -o dns.log your_app 追踪解析调用栈。
二、常见高延迟场景与修复
- SSH 登录慢
- 在服务端编辑 /etc/ssh/sshd_config:设置 UseDNS no(关闭反向 DNS 查询)、GSSAPIAuthentication no(关闭 GSSAPI 认证),然后重启 sshd。
- 客户端也可在 /etc/ssh/ssh_config 设置 GSSAPIAuthentication no 减少握手往返。
- DNS 解析慢或卡顿
- 修正 /etc/hosts 与 /etc/nsswitch.conf,确保本机名能快速解析;必要时在 /etc/resolv.conf 调整 timeout/attempts 降低重试等待。
- 若业务不需要 IPv6,可在 /etc/sysctl.conf 禁用:net.ipv6.conf.all.disable_ipv6=1、net.ipv6.conf.default.disable_ipv6=1 并执行 sysctl -p(变更前评估对业务影响)。
- 若 DNS 返回 AAAA 的 SERVFAIL 导致并行 A/AAAA 查询重试耗时,优先修复 DNS;临时方案可用 ping -4、或在容器内强制 IPv4。
- Java/应用获取本机名慢
- 现象常见于 InetAddress.getLocalHost().getHostName() 触发 DNS 反向解析;可通过 缓存主机名、使用 静态配置,或在容器/启动参数中设置 -Djava.net.preferIPv4Stack=true -Dsun.net.inetaddr.ttl=60 缓解。
三、网络与内核参数优化(适用于高并发/长链路)
- 建议先备份并在测试环境验证,再分批上线:
- 连接与端口
- 调大监听队列与本地端口范围:net.core.somaxconn=65535、net.ipv4.ip_local_port_range=“1024 61999”。
- 复用 TIME_WAIT 端口:net.ipv4.tcp_tw_reuse=1(注意与业务协议兼容性)。
- TCP 栈与超时
- 减少重试降低握手耗时:net.ipv4.tcp_syn_retries=2、net.ipv4.tcp_synack_retries=2、net.ipv4.tcp_retries2=5。
- 开启 TCP Fast Open:net.ipv4.tcp_fastopen=3(需服务端/客户端共同支持)。
- 调整 Keepalive:net.ipv4.tcp_keepalive_time=1200、net.ipv4.tcp_keepalive_intvl=10、net.ipv4.tcp_keepalive_probes=6。
- 拥塞控制
- 在 Linux 内核 ≥ 4.9 且链路存在丢包/抖动时,可启用 BBR:net.core.default_qdisc=fq、net.ipv4.tcp_congestion_control=bbr,并通过 sysctl -p 使配置生效;用 sysctl net.ipv4.tcp_available_congestion_control 与 lsmod | grep bbr 验证。
四、验证与回退
- 验证
- SSH:再次登录应明显减少等待;必要时用 ssh -vvv 确认不再卡在 DNS/GSSAPI。
- DNS:time host $(hostname)、time dig $(hostname) 的耗时显著下降;应用侧 InetAddress.getLocalHost().getHostName() 接近 毫秒级。
- HTTP/业务:用 curl -w 对比 DNS、TCP、首包 各阶段耗时是否改善。
- 回退
- 逐项撤销最近变更(如恢复 UseDNS yes、移除新增 sysctl 项、关闭 BBR),每步变更后复测,定位引入延迟的具体项。