Bitbucket 管道因内存不足而失败,同时在 docker (Scala) 中使用 cassandra 进行测试

问题描述

我有需要 docker cassandra 启动和运行的 Scala 测试。

根据配置我得到其中之一

  • Container 'Build' exceeded memory limit.
  • Container 'docker' exceeded memory limit.
  • Cassandra 容器 OOM

解决方法

最后是 cassandra 配置,但也有一组 bitbucket 配置:

  • cassandra 环境变量,为测试容器设置,但可以通过任何其他方式传递给 docker
 val container: CassandraContainer = CassandraContainer()
 container.container.addEnv("JVM_OPTS","-Xms1024M -Xmx1024M")
 container.container.addEnv("HEAP_NEWSIZE","128M")
 container.container.addEnv("MAX_HEAP_SIZE","2048M")
 container.start()
  • bitbucket 管道
options:
  docker: true
  size: 2x # Increase max size to 8GB

definitions:
  services:
    docker:
      memory: 4096 # Give 4 to docker

...

  - step:
          name: run the tests
          caches:
            - sbt
            - ivy2
          script:
            - export TESTCONTAINERS_RYUK_DISABLED=true
            # Limit sbt memory usage
            - export SBT_OPTS="-Xms1024m -Xmx1024m -XX:+CMSClassUnloadingEnabled -Xss4m -XX:+UseConcMarkSweepGC"
            - sbt -v scalafmtSbtCheck scalafmtCheck +compile +test
          services:
            - docker