【问题标题】:Mesos/Marathon Memory usage limits for DockerDocker 的 Mesos/Marathon 内存使用限制
【发布时间】:2015-08-18 15:13:56
【问题描述】:

我们使用 mesos-Marathon 创建了一个 wordpress 容器,我们分配了 0.1 CPU 和 64mb RAM。

当我们检查 docker stats 时,我们观察到我们分配的内存与我们在马拉松中分配的不同, 有没有办法更新 Docker 容器的内存使用限制,我们可以在恶魔级别为所有容器设置任何默认限制。(通过 Mesos / Docker 恶魔级别)

我们尝试在 WordPress 网站上进行负载测试,容器仅因 500 个连接而被杀死,我们尝试使用 JMeter 进行负载测试。

提前致谢

【问题讨论】:

    标签: docker containers mesos marathon


    【解决方案1】:

    Docker 还没有用于您的 docker 守护进程的内存选项。至于容器的默认内存限制是多少,您只能在运行时(而不是在运行后)使用以下选项设置限制:

    -m, --memory=""               Memory limit
    --memory-swap=""              Total memory (memory + swap), '-1' to disable swap
    

    根据this

    我还看到here 仍然存在问题。确保您使用的是 Mesos (0.22.1) 或更高版本。

    使用类似 Marathon 请求的内容创建容器怎么样?

    curl -X POST -H "Content-Type: application/json" http://<marathon-server>:8080/v2/apps -d@helloworld.json
    
    helloworld.json:
    {
        "id": "helloworld",
        "container": {
            "docker": {
                "image": "ubuntu:14.04"
            },
            "type": "DOCKER",
            "volumes": []
        },
        "cmd": "while true; do echo hello world; sleep 1; done",
        "cpus": 0.1,
        "mem": 96.0,  # Update the memory here.
        "instances": 1
    }
    

    【讨论】:

    • 嗨,Ricardo,我们可以这样做,但是我们遇到了 Mesos 的问题,一旦将报价分配给任何 matathon 应用程序(Docker 容器),即使容器没有使用这些分配的资源,Mesos 认为就像报价已经分配一样。例如.. 我们有 3 个 mesos-slave,都是相同的,有 4 个内核和 4GB RAM,我们有 20 个 Marathon 应用程序都是相同的,有 0.5core 和 0.5GB。这意味着分配了 10 个内核和 10 GB(即使他们正在使用或没有使用),如果我尝试使用 3 核和 3GB RAM 启动另一个 Marathon 应用程序,Mesos 正在分配资源,但应用程序卡在 Deployments 中。
    • 我们如何永久添加“memory.limit_in_bytes”、“memory.max_usage_in_bytes”,这样如果我启动一个容器,它就可以继承这些值并启动容器。
    • 要利用 Mesos 中的分配松弛,您可以尝试超额订阅 (mesos.apache.org/documentation/latest/oversubscription)。
    • 不要认为您可以即时修改资源。尝试像提到的@rukletsov 那样超额订阅
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多