云计算百科
云计算领域专业知识百科平台

java微服务项目中出现的网络、服务器等非代码问题

目录

一、网络层问题(最常见、最难排查)

1. 端口不通 / 端口放行缺失

2. 网络超时、跨机房延迟过高

3. TCP 连接打满、连接泄漏

4. DNS 解析异常 / 解析缓慢

二、服务器 & 操作系统层问题

1. 服务器资源耗尽(CPU / 内存 / 磁盘)

(1)CPU 飙升

(2)内存溢出之外:系统内存不足

(3)磁盘爆满

2. 系统内核参数不合理

3. 时间不同步(隐藏致命问题)

三、中间件 & 基础设施非代码问题

1. Nacos/Eureka 注册发现异常

2. Redis 非代码故障

3. MQ(RocketMQ/Kafka)问题

四、容器 & 云原生特有问题(Docker/K8s)

五、网关 & 负载均衡层问题

六、日常排查通用思路(非代码问题专用)

七、Java 微服务优化避坑(针对非代码问题)


微服务架构下,Bug 不一定在代码,大量故障来自:网络、服务器环境、中间件、操作系统、容器 / 云原生配置、基础设施、运维参数、带宽 / 连接数、时间同步、DNS、防火墙等。下面按场景分类,结合 Java 微服务实际业务场景讲清楚现象、原因、排查点。

一、网络层问题(最常见、最难排查)

1. 端口不通 / 端口放行缺失

现象

  • 服务注册成功,但调用直接超时、Connection refused
  • 本地调试正常,测试 / 生产环境直接调不通

根因

  • 服务器防火墙(firewalld/iptables)未放行服务端口
  • 云服务器安全组规则限制(入站 / 出站端口、IP 白名单)
  • 容器化场景:Docker/ K8s 端口映射错误、Pod 网络策略拦截
  • 微服务典型场景Nacos/Sentinel/RocketMQ/Redis 客户端能连上控制台,但业务服务之间调用不通,就是端口 + 安全组问题。


    2. 网络超时、跨机房延迟过高

    现象

    • 偶尔接口超时、Feign/RestTemplate 调用间歇性失败
    • 白天正常,高峰期大量Read timed out

    根因

  • 微服务跨机房、跨可用区部署,物理网络延迟高
  • 公网调用第三方接口(支付、短信、地图)网络抖动
  • 运营商链路不稳定、弱网
  • Java 特有加重问题

    • Feign、OkHttp 未合理配置连接超时、读取超时、重试策略
    • 无熔断降级,单次慢调用拖垮整个线程池

    3. TCP 连接打满、连接泄漏

    现象

    • 服务莫名卡死、接口响应极慢,无报错日志
    • 服务器ESTABLISHED连接数爆表
    • 无法新建连接,新请求直接阻塞

    根因

  • 未复用 HTTP 连接,每次调用新建短连接
  • 外部资源(数据库、Redis、MQ)连接池配置过小
  • 网络断连后,TCP 僵死连接不释放(半开连接)

  • 4. DNS 解析异常 / 解析缓慢

    现象

    • 服务偶尔注册不上 Nacos、网关路由突然失效
    • 首次调用慢、间歇性域名解析失败

    根因

  • 服务器 DNS 服务器配置不合理、DNS 缓存过期
  • 微服务使用域名注册,DNS 抖动导致服务实例列表刷新异常
  • Java 默认 DNS 缓存策略过长 / 过短

  • 二、服务器 & 操作系统层问题

    1. 服务器资源耗尽(CPU / 内存 / 磁盘)

    (1)CPU 飙升

    非代码原因:

    • 服务器宿主机超配、共享宿主机被其他业务抢占资源
    • 系统定时任务(日志切割、备份、杀毒)高峰期抢占 CPU
    • 磁盘 IO 过高引发 CPU 等待
    (2)内存溢出之外:系统内存不足

    非 OOM 代码问题

    • 服务器物理内存不足,触发 OOM killer 直接杀掉 Java 进程
    • 容器限制内存(Docker/K8s limit)设置过小
    • 服务器缓冲区、缓存占用过高,导致 JVM 无法申请堆外内存
    (3)磁盘爆满

    高频微服务故障:

  • 日志无轮转、不压缩,catalina.out/ 业务日志无限膨胀
  • 临时文件、MQ 堆积文件、上传文件未清理
  • 磁盘 inode 耗尽(小文件过多,日志碎片、缓存文件)

  • 2. 系统内核参数不合理

    高频坑点

  • file-max 最大文件句柄数过小 → Too many open files微服务长连接(Redis、MQ、数据库、网关)多,极易触发
  • TCP 内核参数:tcp_keepalive 不合理,僵死连接不回收
  • 虚拟内存、swap 开启,内存不足时频繁交换磁盘,服务巨卡

  • 3. 时间不同步(隐藏致命问题)

    现象

    • 分布式定时任务重复执行 / 不执行
    • JWT、Token、签名校验失败
    • 分布式事务、订单时间错乱、日志时序混乱

    根因服务器未配置 NTP 时间同步,多台微服务机器时间偏差几秒~几分钟。


    三、中间件 & 基础设施非代码问题

    1. Nacos/Eureka 注册发现异常

    非代码问题:

  • Nacos 服务器集群负载过高、磁盘满、GC 卡顿
  • 网络分区:微服务与注册中心心跳断连
  • 临时网络抖动导致服务频繁上下线(实例刷屏)
  • 环境隔离问题:开发 / 测试 nacos 地址串台
  • 2. Redis 非代码故障

  • Redis 服务器内存满、达到 maxmemory,触发淘汰策略导致缓存击穿
  • Redis 主从同步延迟、集群槽位迁移
  • 网络分区导致缓存读写超时、集群下线
  • 未开启持久化,重启数据丢失
  • 3. MQ(RocketMQ/Kafka)问题

  • Broker 磁盘爆满、页缓存不足,消息写入阻塞
  • 集群节点下线、网络分区,消费堆积
  • 服务器磁盘 IO 瓶颈,导致 MQ 收发延迟暴涨

  • 四、容器 & 云原生特有问题(Docker/K8s)

  • 资源配额限制CPU / 内存配额压测时被限流、降频,代码没问题但性能上不去
  • 容器网络网桥、CNI 插件异常,Pod 之间互通失败
  • 镜像时区不对、编码不对,导致日期、中文乱码
  • 容器日志驱动限制,日志丢失、截断

  • 五、网关 & 负载均衡层问题

  • Nginx / 网关 连接数上限、worker 进程数配置不足
  • 负载均衡会话保持、健康检查规则不合理,剔除正常服务
  • 上层网关超时时间 < 下游服务超时,上层先断连,业务报超时但服务还在执行
  • SSL 证书过期、HTTPS 协议版本不兼容

  • 六、日常排查通用思路(非代码问题专用)

  • 先区分:单实例问题 还是 全部服务问题
    • 全部异常:网络、DNS、中间件、公共服务器
    • 单实例异常:当前机器资源、配置、容器限制
  • 优先看基础设施指标CPU、内存、磁盘、磁盘 IO、网络流量、TCP 连接数
  • 排除安全组、防火墙、端口、域名连通性
  • 查看系统日志 /var/log/messages、容器日志、内核报错
  • 核对时间同步、内核参数、文件句柄数

  • 七、Java 微服务优化避坑(针对非代码问题)

  • 统一配置:超时时间、连接池大小、心跳检测
  • 服务器强制开启 NTP 时间同步
  • 所有服务配置日志轮转、自动压缩、过期删除
  • 生产环境关闭 swap,调优文件句柄、TCP 内核参数
  • 云环境严格梳理安全组、白名单、容器资源限制
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » java微服务项目中出现的网络、服务器等非代码问题
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!