1 核 1g 的服务器使用 docker,内存捉急

2019-06-15 10:37:56 +08:00
 HuasLeung

又开了台 digital ocean 的 1 核 1g 小鸡,docker 只运行了 2 个容器实例,内存就用了 87%……

tomcat 里跑了一个 java 应用,jvm 是真的吃内存……

以后尽量用 go 写东西了,应该能节省不少的服务器资源

15952 次点击
所在节点    程序员
42 条回复
elfive
2019-06-15 10:48:14 +08:00
go 和 java 都耗资源…
HuasLeung
2019-06-15 10:51:36 +08:00
@elfive 小机子都不方便,看来只能扩容了
wzw
2019-06-15 10:59:20 +08:00
我都还没用上 docker ……
my101du
2019-06-15 11:04:34 +08:00
我在 8G 内存的 macOS 上对比 docker 和 VirtualBox:

1. docker 服务自身 + 限制分配 1G 给几个小的 php 应用。内存里查看进程 com.docker.hyper 总共占用 1.6G 左右
2. 开一个 VirtualBox, 再分配一个 CentOS7 虚拟机 768M 内存,内存里查看几个进程合计 800M+200M = 1G 左右

但是很奇怪的是,再对比 全部系统内存剩余情况

运行 docker 时,系统剩余 1.5G 内存
运行 VirtualBox 时, 系统剩余 900M 内存

我不懂 docker 内部的机制。 但是感觉

docker 的内存占用数据,很可能把和系统共享的那部分也算进去了,实际上并不会占用那么多,只有跑的容器才“真正”占用
而 VirtualBox 分配的虚拟机,是实实在在时刻霸占着资源的。


所以你这个情况,主要是 MySQL 和 Java 服务消耗资源大,和 docker 本身关系不大吧。。。
dreasky
2019-06-15 11:04:43 +08:00
docker 说这锅不是我的,linux 内存占用 87%很正常,加个 swapfile 就可以了
leopku
2019-06-15 11:04:45 +08:00
@elfive 小机跑了好多个 go 程序的容器,没见多吃内存
miniliuke
2019-06-15 11:07:51 +08:00
你这 mysql 就占了 40%,java 占了 25%,这是 mysql 的锅啊
abcbuzhiming
2019-06-15 11:10:55 +08:00
这关 docker 什么事情,docker 还能有中变没降低内存消耗不成?拿 1G 内存,即跑 JVM 又跑 MySQL 我也是醉了,你当心你的 MySQL 因为内存 crash
xiaolanger
2019-06-15 11:14:53 +08:00
1G 内存,我是能不跑 MySQL 就不跑了
hst001
2019-06-15 11:15:16 +08:00
@elfive #1 把 go 去掉,别误导别人了
skiy
2019-06-15 11:21:15 +08:00
自从在美团云上用 docker 把硬盘挂掉之后,就不敢再在 1G 的小鸡上玩 docker 了。
yixiang
2019-06-15 11:31:21 +08:00
默默看了看手里 256M 内存的 vps。内存跑满没啥问题,内存就是拿来用的,长期闲置的内存长期浪费钱。
realpg
2019-06-15 12:47:23 +08:00
@xiaolanger #9
只要一个小小的参数 就可以 256M RAM 流畅跑轻度负载 mysql 服务器
ctro15547
2019-06-15 13:12:08 +08:00
my-small.cnf ,mysql 好像有这个配置适合在少内存的机器上跑,可以取舍一下
niubee1
2019-06-15 13:16:27 +08:00
你要节约资源的话, 还是用 C++写东西吧
roychan
2019-06-15 13:29:48 +08:00
mysql 的 performance 模式关掉就可以了
rawidn
2019-06-15 13:31:07 +08:00
@my101du mac 下的 docker 不是原生的,是内部起了一个轻量的虚拟机,所以看着内存占用比较大。linux 下 docker 服务本身的内存占用几乎可以忽略
barbery
2019-06-15 13:34:09 +08:00
显然是 JVM 的事情,说 go 耗资源的,我也想知道怎么得出来的结论???
Nasei
2019-06-15 13:41:02 +08:00
@my101du 你可以在虚拟机里再装 docker 看看,mac 上的 docker 包括 win 上的 linux 容器都是虚拟机,只有 linux docker 和 win10 的 windows 容器是原生的
shm7
2019-06-15 13:54:43 +08:00
这玩意给你用 ss 的 你搞个 jvm

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/574147

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX