gpt4 book ai didi

Golang CircleCI 2.0 测试失败,信号为 : killed

转载 作者:数据小太阳 更新时间:2023-10-29 03:02:56 31 4
gpt4 key购买 nike

我正在迁移到 circleci2.0,在成功构建后执行测试时,它们会随机失败并出现以下错误消息

/usr/local/go/pkg/tool/linux_amd64/link: signal: killed
/usr/local/go/pkg/tool/linux_amd64/link: flushing $WORK/b462/payment_step_svc.test: write $WORK/b462/svc.test: cannot allocate memory

我使用了以下配置

jobs:
build:
docker:
- image: circleci/golang:latest
- image: rabbitmq:3.5.4
- image: redis

working_directory: /go/src/github.com/soniabhishek/taskrunner

environment:
GOOS: linux
GOARCH: amd64
GOPATH: /go

steps:
- checkout
- run:
name: Get dependencies
command: go get -t -d -v ./...
- run:
name: Build all
command: go build ./...
- run:
name: Test all
command: go test -v ./...

除了最新版本(1.10.3)之外,我已经尝试过许多 golang 版本。

虽然我找到了这个黑客但我不确定为什么会这样,当我使用 CGO_ENABLED=0

时,我的所有测试都会运行

想知道为什么会出现这个问题以及永久的解决方案

最佳答案

这里有两条线索表明您消耗了太多内存,并且操作系统正在强行终止您的“流氓”进程。它们是:

killed

cannot allocate memory

您可以通过在失败构建结束时获取 SSH session 并使用 dmesg 检查终止历史记录来确认这一点。如果它给你 "sacrifice child"消息,然后您遇到了非常严重的内存限制,以至于操作系统被迫从内存中删除一个进程。

您有多种选择。我按照建议您喜欢它们的顺序将它们放在这里:

  • 通过更改您的 Go 程序来减少内存消耗
  • 请 CircleCI 为您设置一个更大的 Docker 容器(这是一个收费选项)。默认是4G,相信8G和16G都可以
  • 切换到机器执行器(目前免费,可能会发生变化)。这为您提供了 8G 的 RAM,但您失去了 Docker 方法的一些灵 active (例如,您必须使用几个预设基础镜像之一)。

关于Golang CircleCI 2.0 测试失败,信号为 : killed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52129612/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com