當容器內的應用程序將日誌寫入安裝目錄中的文件時,容器使用的內存不斷增加,因此我正面臨一個問題。當寫入安裝目錄中的文件時,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
這難道不是造成永遠的循環,你做? –
@DharmaSaputra:永久循環只是將數據打印到文件中。它不會持續使用內存。 – Flimzy
我嘗試了我的機器上的代碼。實際上'推遲file.Close()'從不執行,文件'test.txt'越來越大。因爲它保持附加。 –