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

Testcontainers Cloud试用出现too many concurrent requests错误求助

问题

在构建容器时使用Testcontainers运行Maven测试,因构建容器内无Docker runtime改用Testcontainers Cloud试用账户,使用的Dockerfile如下:

FROM maven:3.9-eclipse-temurin-19 AS build
COPY src /home/app/src
COPY pom.xml /home/app

ENV TC_CLOUD_TOKEN=<MY TOKEN>
RUN curl -fsSL https://app.testcontainers.cloud/bash | bash
RUN cp ~/.testcontainers.properties /root/.testcontainers.properties

RUN mvn -f /home/app/pom.xml clean package

执行时触发too many concurrent requests错误,关键日志片段如下:

2023-06-02T03:30:58.637Z --- INF Unable to obtain a lease body="{\"title\":\"Too many leases active on cluster for user\",\"status\":429}" status=429
ERROR: too many concurrent requests
2023-06-02T03:32:23.043Z --- FTL Timed out waiting for agent to be running addr=127.0.0.1:42289
Error response from daemon: The command '/bin/sh -c curl -fsSL https://app.testcontainers.cloud/bash | bash' returned a non-zero code: 1

需要限制并发请求,确保单个测试能在试用版环境正常运行。

解决方案

1. 强制Maven单线程执行测试

Maven默认并行执行测试,会同时创建多个Testcontainers实例,触发试用版并发限制。修改Maven打包命令,强制单线程运行:

RUN mvn -f /home/app/pom.xml clean package -DforkCount=0 -DreuseForks=false
  • forkCount=0:测试在Maven进程内运行,不创建新fork,确保单线程
  • reuseForks=false:不重用fork进程,避免意外并发

2. 配置Testcontainers Cloud最大并行容器数

在testcontainers.properties中添加参数,限制同时运行的容器数量为1:
在Dockerfile中插入以下配置步骤:

# 在复制properties文件后添加并发限制配置
RUN echo "testcontainers.cloud.max-parallel-containers=1" >> /root/.testcontainers.properties

该参数强制Testcontainers同时只启动一个容器,避免触发试用版的并发请求限制。

3. 禁用JUnit 5并行测试(若适用)

如果测试基于JUnit 5编写,在pom.xml中配置Maven Surefire插件,关闭并行执行:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <properties>
                    <configurationParameters>
                        junit.jupiter.execution.parallel.enabled=false
                    </configurationParameters>
                </properties>
            </configuration>
        </plugin>
    </plugins>
</build>

确保测试类串行执行,减少对Testcontainers Cloud的并发请求。

4. 确保Agent完全启动后再运行测试

修改Dockerfile中Agent的安装命令,添加等待逻辑,避免Agent未就绪导致的重复请求:

# 替换原Agent安装命令,添加启动等待
RUN curl -fsSL https://app.testcontainers.cloud/bash | bash && \
    until tcc-agent status | grep -q "Running"; do sleep 2; done

等待Agent进入运行状态后再执行测试,减少无效请求占用并发额度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:07:03