You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排查AWS上ECS服务空闲时的频繁未知HTTP请求?

排查思路
  • 扩展Metrics Insight查询维度,暴露请求细节
    修改查询语句,加入uri和method标签,直接定位请求路径:

    SELECT SUM("http.server.requests.count") FROM test GROUP BY status, uri, method
    

    这样能直观看到哪些路径产生了请求,排除业务接口后,剩下的就是未知请求的来源(比如Actuator端点、静态资源等)。

  • 查看容器原始请求日志
    配置Spring Boot日志(如Logback)输出完整请求信息,包括请求路径、来源IP、请求头。比如在logback-spring.xml里添加:

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n
                Request: %request{method}, %request{uri}, Remote IP: %request{remoteHost}
            </pattern>
        </encoder>
    </appender>
    

    或者开启Web层调试日志:logging.level.org.springframework.web=DEBUG,直接查看所有请求的处理过程。

  • 核查AWS服务层面的额外探测

    • 检查负载均衡(ALB/NLB)目标组的健康检查配置:是否存在多个健康检查路径,或者检查频率比预期更高?
    • 确认ECS服务发现(如Cloud Map)是否有额外的服务探测请求;
    • 排查CloudWatch Agent、Systems Manager等AWS组件是否在向容器端口发起请求。
  • 排查Spring Boot内部及依赖的自动请求

    • 检查是否开启了Spring Cloud组件的内部心跳(如Eureka客户端向注册中心的心跳、Config Server配置拉取),这些请求会被http.server.requests统计;
    • 确认是否有静态资源请求(如/favicon.ico),Spring Boot默认会处理这类请求,且会被纳入指标统计;
    • 检查是否误开启了Spring Boot DevTools(生产环境应禁用),其自动重启、LiveReload可能产生额外请求。
  • 容器内抓包直接分析请求来源
    登录到ECS容器内部,执行tcpdump命令抓包(假设应用端口为8080):

    tcpdump -i any port 8080 -A
    

    抓取一段时间的数据包,直接查看请求的原始内容(请求行、请求头、来源IP),精准定位请求发起方。

  • 验证自定义Interceptor的覆盖范围
    自定义Interceptor仅处理了带有@RequestMapping、@GetMapping等注解的业务方法,但Actuator端点、静态资源请求是通过独立的HandlerMapping处理的,不会被该Interceptor拦截。可以补充拦截所有请求的Interceptor,或者直接访问Actuator的/actuator/metrics/http.server.requests端点,获取所有请求标签的详细统计。

内容的提问来源于stack exchange,提问作者mal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:50:54