当写入安装目录中的文件时,docker容器不断增加内存使用量
当容器内的应用程序将日志写入安装目录中的文件时,容器使用的内存不断增加,因此我正面临一个问题。当写入安装目录中的文件时,docker容器不断增加内存使用量
我希望内存使用不会因此而增加。 有没有人知道它为什么会增加? 谢谢!
这里是我做过什么:
写刚刚写的 “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")
}
}
构建搬运工图像
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当前目录。
- 检查存储器使用
- 它使用527MiB。
- 几秒钟后,它是844.8 MIB
- 它不断增加和主机落井下石。
docker run -d -v $PWD:/home/mylog mylog
docker stats
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
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