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

GitHub Actions中K6性能测试localhost连接被拒绝问题求助

问题分析

报错connect: connection refused的核心原因是:GitHub Actions的运行器是独立的虚拟环境,你的k6测试请求的localhost:44353指向该运行器本身,但你没有在这个环境中启动对应的.NET 5后端服务,导致连接失败。

解决步骤

1. 在GitHub工作流中添加.NET 5服务的构建与启动步骤

你需要在运行k6测试前,先在Actions环境中构建并启动你的后端服务,且要确保服务在后台运行,不会阻塞后续步骤。
修改后的dotnet.yml示例:

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup .NET 5
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '5.0.x'

      - name: Build backend
        run: dotnet build --configuration Release

      - name: Start backend service in background
        run: |
          nohup dotnet run --project YourProjectName --configuration Release --urls "http://localhost:5000;https://localhost:5001" &
          # 等待服务启动完成,避免k6提前发起请求
          sleep 10
          # 也可以用更可靠的方式检查服务状态,比如curl
          until curl -s http://localhost:5000/Test; do sleep 2; done

      - name: Performance Load test
        uses: grafana/k6-action@v0.2.0
        with:
          filename: orenji-backend.Tests/PerformanceTests/LoadTest.js

2. 调整k6测试代码的base_url

根据你在dotnet run中指定的端口,修改测试代码里的base_url:

// 对应上面dotnet run指定的端口,比如http的5000或者https的5001
const base_url = 'http://localhost:5000'

3. 注意事项

  • 如果你的.NET项目配置了特定端口(比如launchSettings.json里的端口),要确保dotnet run时指定的端口和测试代码一致。
  • sleep 10是简单的等待方式,生产级工作流建议使用wait-for-it这类工具来精确等待服务就绪,避免因环境差异导致的启动延迟问题。
  • 若使用HTTPS,需要处理证书问题(比如在Actions环境中信任开发证书),或者暂时用HTTP进行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:40:37