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

银行Mac环境下Testcontainers连接拒绝问题排查求助

排查Mac上Testcontainers/Rancher间歇性连接拒绝问题的方法

一、Mac上替代Windows Process Monitor的工具

  • Activity Monitor(系统自带):无需额外安装,切换到「网络」标签,筛选docker、rancher相关进程,可实时监控TCP/UDP连接状态,排查连接拒绝时是否存在端口占用或进程异常。
  • lsof(命令行工具):系统自带,用于端口占用排查。例如怀疑某端口被占用时,执行lsof -i :<端口号>查看占用进程;实时监控指定进程网络活动可执行lsof -p <进程PID> -r 1(每1秒刷新一次)。
  • tcpdump(命令行抓包):系统自带,可抓取网络包分析连接失败细节。针对容器所在网络接口抓包:tcpdump -i docker0 host <容器IP> and port <容器端口> -w capture.pcap,生成的pcap文件可直接用tcpdump分析,或导入Wireshark(若环境允许安装)查看是SYN无响应还是RST包被返回。
  • Little Snitch(需申请权限安装):可视化监控所有进程的网络请求,能直观定位是否有进程拦截连接,适合排查隐蔽的网络阻断行为。

二、Shell脚本辅助排查

1. 实时监控容器端口可达性

循环测试容器端口连通性,自动记录失败时间与端口占用情况:

#!/bin/bash
CONTAINER_IP="你的容器IP"
CONTAINER_PORT="你的容器端口"
LOG_FILE="connection_test.log"

while true; do
    TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
    if nc -z -w 2 $CONTAINER_IP $CONTAINER_PORT; then
        echo "$TIMESTAMP: 连接成功" >> $LOG_FILE
    else
        echo "$TIMESTAMP: 连接拒绝(错误码:$?)" >> $LOG_FILE
        lsof -i :$CONTAINER_PORT >> $LOG_FILE
        echo "---" >> $LOG_FILE
    fi
    sleep 5
done

替换占位符后,执行chmod +x test_connection.sh && ./test_connection.sh即可运行。

2. 监控Docker/Rancher进程状态

实时检查核心进程运行状态:

#!/bin/bash
LOG_FILE="process_monitor.log"

while true; do
    TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
    if pgrep -x "dockerd" > /dev/null; then
        echo "$TIMESTAMP: Docker daemon 运行正常" >> $LOG_FILE
    else
        echo "$TIMESTAMP: Docker daemon 已停止" >> $LOG_FILE
    fi
    if pgrep -x "rancher-agent" > /dev/null; then
        echo "$TIMESTAMP: Rancher Agent 运行正常" >> $LOG_FILE
    else
        echo "$TIMESTAMP: Rancher Agent 已停止" >> $LOG_FILE
    fi
    echo "---" >> $LOG_FILE
    sleep 10
done

三、安全软件相关排查

即使已禁用部分工具,银行环境可能存在隐藏安全组件:

  • 检查系统完整性保护(SIP)状态:执行csrutil status,确认近期是否有SIP规则更新限制容器网络活动。
  • 核查MS Defender规则:打开「系统设置」→「隐私与安全性」→「防火墙」,查看是否存在针对Docker/Rancher的拦截规则;或执行sudo pfctl -s rules查看防火墙规则列表。
  • 排查隐形代理:执行networksetup -listallnetworkservices查看未知网络服务,再用networksetup -getwebproxy <服务名>检查是否有后台运行的未禁用代理。

四、Testcontainers/Rancher自身排查

  • 查看Testcontainers日志:默认路径~/.testcontainers/logs,检查连接失败时容器是否未完全启动就被测试请求访问。
  • 重启核心服务:执行brew services restart docker(Homebrew安装的Docker)或sudo systemctl restart docker(原生Docker),重启后重新运行测试验证问题是否缓解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 01:27:09