首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   HuasLeung · 66 天前 · 4511 次点击
    这是一个创建于 66 天前的主题,其中的信息可能已经有所发展或是发生改变。

    又开了台 digital ocean 的 1 核 1g 小鸡,docker 只运行了 2 个容器实例,内存就用了 87%…… https://i.loli.net/2019/06/15/5d045a508b2ce95475.png https://i.loli.net/2019/06/15/5d045a6cc6b8a99054.png

    tomcat 里跑了一个 java 应用,jvm 是真的吃内存…… https://i.loli.net/2019/06/15/5d0457f10b7a363852.png

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

    42 回复  |  直到 2019-06-16 18:41:52 +08:00
        1
    elfive   66 天前 via iPhone
    go 和 java 都耗资源…
        2
    HuasLeung   66 天前
    @elfive 小机子都不方便,看来只能扩容了
        3
    wzw   66 天前 via iPhone
    我都还没用上 docker ……
        4
    my101du   66 天前   ♥ 2
    我在 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 本身关系不大吧。。。
        5
    dreasky   66 天前
    docker 说这锅不是我的,linux 内存占用 87%很正常,加个 swapfile 就可以了
        6
    leopku   66 天前 via iPhone
    @elfive 小机跑了好多个 go 程序的容器,没见多吃内存
        7
    miniliuke   66 天前 via Android
    你这 mysql 就占了 40%,java 占了 25%,这是 mysql 的锅啊
        8
    abcbuzhiming   66 天前   ♥ 1
    这关 docker 什么事情,docker 还能有中变没降低内存消耗不成?拿 1G 内存,即跑 JVM 又跑 MySQL 我也是醉了,你当心你的 MySQL 因为内存 crash
        9
    xiaolanger   66 天前
    1G 内存,我是能不跑 MySQL 就不跑了
        10
    hst001   66 天前
    @elfive #1 把 go 去掉,别误导别人了
        11
    skiy   66 天前
    自从在美团云上用 docker 把硬盘挂掉之后,就不敢再在 1G 的小鸡上玩 docker 了。
        12
    yixiang   66 天前
    默默看了看手里 256M 内存的 vps。内存跑满没啥问题,内存就是拿来用的,长期闲置的内存长期浪费钱。
        13
    realpg   66 天前
    @xiaolanger #9
    只要一个小小的参数 就可以 256M RAM 流畅跑轻度负载 mysql 服务器
        14
    ctro15547   66 天前   ♥ 1
    my-small.cnf ,mysql 好像有这个配置适合在少内存的机器上跑,可以取舍一下
        15
    niubee1   66 天前
    你要节约资源的话, 还是用 C++写东西吧
        16
    roychan   66 天前
    mysql 的 performance 模式关掉就可以了
        17
    rawidn   66 天前 via iPhone
    @my101du mac 下的 docker 不是原生的,是内部起了一个轻量的虚拟机,所以看着内存占用比较大。linux 下 docker 服务本身的内存占用几乎可以忽略
        18
    barbery   66 天前
    显然是 JVM 的事情,说 go 耗资源的,我也想知道怎么得出来的结论???
        19
    Nasei   66 天前 via Android
    @my101du 你可以在虚拟机里再装 docker 看看,mac 上的 docker 包括 win 上的 linux 容器都是虚拟机,只有 linux docker 和 win10 的 windows 容器是原生的
        20
    shm7   66 天前 via iPhone   ♥ 1
    这玩意给你用 ss 的 你搞个 jvm
        21
    hoyixi   66 天前
    1G,这机器你直接跑且单独跑 Java 都够呛,Java 是“贵”族,写 Java 掌控 Java 的也是“贵”族

    要不 PHP 咋那么受中小企业欢迎呢
        22
    1073850525   66 天前   ♥ 1
    jvm 可是试试 openj9,比 openjvm 省资源
    我也是 1G 1 核 ,跑 nginx 和 两个 tomcat 和 mysql
        23
    0x000007b   66 天前 via Android
    @elfive go 更吃 cpu 相对内存来说算力更便宜些
        24
    my101du   66 天前
    @Nasei @rawidn

    谢谢指教。 那说明这个轻量的虚拟机, 比 VirtualBox 这些传统的虚拟机软件,实在是太节省资源了~ ( monitor 里看起来单个进程内存占用大,但对整个系统的真实内存占用其实并不大)
        25
    gavinjou818   66 天前
    我也试过用 2G 的阿里来玩 DOCKER,但是无奈后面也直接放弃了。。实在太卡了。。基本开了几个镜像也没什么内存了。
        26
    version   66 天前 via iPhone
    docker 起码要最低配置 8 核 16g 吧,硬盘 ssd 买大一点,k8s 起码要买 10 台服务器吧,如果不是手写脚本更新重启,省资源机器,压测还更稳定,不见得 docker 和 k8s 出问题好解决
        27
    spadger   66 天前
    我 256M 内存的机器,连 bundle install 命令都跑不起来...
        28
    qfdk   66 天前 via iPhone
    说下方法给你吧 开个 swap 就好了 1G 内存跑了 n 个容器 加上 lnmp 和 Spring 全家桶 pay.qfdk.me 就是上面的
        29
    wspsxing   66 天前 via Android
    java 适合大项目+好机器
        30
    wee911   66 天前
    跟 docker 没关系,java 就这么吃内存
        31
    swulling   66 天前 via iPhone
    @my101du Mac 上的 Docker 是跑在虚机里的 Linux 上的。和 Linux 下的 Docker 完全不是一回事
        32
    uptime   66 天前
    我 64M 小内存跑一个 55+跑一个论坛,找谁说呢?
        33
    1010543618   66 天前
    我的 512 内存的开 docker 跑东西内存不够一跑过一会就停,检查了半天发现内存的问题,然后开了 swap 就好了
        34
    chwech   66 天前 via iPhone
    我开了个 nginx,mysql 和 wordpress 容器,然后 mysql 就不够内存了。开了交换文件才能用。然后我的服务器一直 cpu 100%是怎么办?求支招
        35
    NextNal   66 天前
    swapfile 可用
        36
    johz   66 天前
    我的 1 核 1G 跑了 lnmp + redis 妥妥的

        37
    johz   66 天前
    十几万用户的小程序服务器端
        38
    notreami   66 天前
    难道我太前沿了,tomcat 好多年前就抛弃了,现在不是 jetty 就是 undertow。
        39
    wly19960911   65 天前
    @notreami 你太前沿了,tomcat 还没有丢,spring boot 默认使用 tomcat
        40
    godoway   65 天前
    @notreami 还有更前沿的把 servlet 容器都丢了,基于 netty 做开发。
    例如 vert.x
        41
    wly19960911   65 天前
    @godoway spring flux 不就是这样吗。响应式+netty
        42
    Hopetree   65 天前
    我也是阿里云 1G1U,我容器运行了四个,django+mysql+redis+nginx,内存占用了 80%,刚好够用
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   893 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 21:09 · PVG 05:09 · LAX 14:09 · JFK 17:09
    ♥ Do have faith in what you're doing.