当写入安装目录中的文件时,docker容器不断增加内存使用量

当容器内的应用程序将日志写入安装目录中的文件时,容器使用的内存不断增加,因此我正面临一个问题。当写入安装目录中的文件时,docker容器不断增加内存使用量

我希望内存使用不会因此而增加。 有没有人知道它为什么会增加? 谢谢!

这里是我做过什么:

  1. 写刚刚写的 “Hello World” 到 “/home/mylog/test.txt” 的应用程序。

    func main(){ 

    file, _ := os.OpenFile("/home/mylog/test.txt", os.O_WRONLY|os.O_CREATE, 0666)

    defer file.Close()

    for {

    fmt.Fprintln(file, "hello world")

    }

    }

  2. 构建搬运工图像

docker build -t mylog .

Dockerfile

FROM golang

RUN mkdir -p /home/mylog

COPY main.go /go

WORKDIR /go

CMD ["go","run","main.go"]

  • 运行带-v选项的容器mouting当前目录。
  • docker run -d -v $PWD:/home/mylog mylog

  • 检查存储器使用
  • docker stats

  • 它使用527MiB。
  • CONTAINER CPU% MEMUSAGE/LIMIT MEM% NET I/O BLOCK I/O PIDS

    100.41% 527MiB/15.5GiB 3.32% 648B /0B 72.3MB/0B 15

  • 几秒钟后,它是844.8 MIB
  • CONTAINER CPU% MEMUSAGE/LIMIT MEM% NET I/O BLOCK I/O PIDS

    100.15% 844.8MiB/15.5GiB 5.32% 648B /0B 72.3MB/0B 15

  • 它不断增加和主机落井下石。
  • 回答:

    不时地打电话给我。

    file.Sync() 

    https://golang.org/pkg/os/#File.Sync

    如果不把这种写入到内存和file.Close()等待以提交更改的文件。 而在这种情况下,Close in not called因为它在defer(这意味着它在函数返回时被调用,并且在这里它永远不会返回,因为它是永无止境的)。

    LE: 同时尝试使用:的

    file.WriteString("hello world") 

    代替

    fmt.Fprintln(file, "hello world") 

    以上是 当写入安装目录中的文件时,docker容器不断增加内存使用量 的全部内容, 来源链接: utcz.com/qa/262142.html

    回到顶部