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
相关产品推荐
相关产品推荐

