我在我的CircleCI配置文件中使用- image: peopleperhour/dynamodb
作为docker镜像。
在CircleCI中输出以下内容。
Initializing DynamoDB Local with the following configuration:
Port: 8000
InMemory: false
DbPath: /var/dynamodb_local
SharedDb: false
shouldDelayTransientStatuses: false
CorsParams: *
Exited with code 137
第一次测试通过正常,Exited with code 137
直到稍后才会发生。但是一旦发生错误,所有测试都会失败。
我看到this链接,并将我的代码更改为以下内容,但没有运气。
- image: peopleperhour/dynamodb
environment:
MAX_HEAP_SIZE: 2048m
HEAP_NEWSIZE: 512m
有关如何解决此问题的任何想法?
答案 0 :(得分:1)
我遇到了同样的问题。由于内存占用空间似乎较小,我最终只使用了本地堆栈。
我对该容器的配置如下:
- image: localstack/localstack
environment:
SERVICES: dynamodb:4570
DEFAULT_REGION: us-west-2
答案 1 :(得分:0)
作为解决方法,您可以尝试为容器指定重新启动策略:
- image: peopleperhour/dynamodb
restart: on-failure # Restart the container if it exits due to an error
environment:
MAX_HEAP_SIZE: 2048m
HEAP_NEWSIZE: 512m
答案 2 :(得分:0)
您可以尝试其他3件事。
1:
将资源限制添加到config.yml的docker部分 资源:
requests:
memory: "2Gi"
limits:
memory: "4Gi"
默认资源是具有2个vCPU和4GB内存的中型资源。
2:
使用Java选项环境变量来设置内存限制。 https://circleci.com/blog/how-to-handle-java-oom-errors/
3:
如果您使用的是非基本帐户,则可以告诉Circleci使用其他计算机resource_class。您必须为此制定性能计划。 https://circleci.com/docs/2.0/configuration-reference/#resource_class
答案 3 :(得分:0)
我使用amazon/dynamodb-local
容器在CircleCI上启动本地DynamoDB。我遇到了同样的问题,并且通过容器设置MAX_HEAP_SIZE
和Java选项对我来说也不是很有效。我发现最好的方法是覆盖容器的入口点:
docker:
- image: amazon/dynamodb-local:1.13.1
entrypoint: java -Djava.library.path=./DynamoDBLocal_lib -Xmx256m -jar DynamoDBLocal.jar -sharedDb -port 8000