小编pyt*_*lus的帖子

Docker容器中的内存限制和CPU限制

更新:

在关于此主题的stackoverflow上发现了很多问题和讨论。尽管它们被标记为已接受答案,并已被成千上万的用户开始使用,但在这里似乎并不是正确的答案。


我运行了一个具有资源限制的docker(版本1.13.1,版本092cba3)容器,如下所示:

docker run --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -m 4096M --cpuset-cpus='0' --cpus=1 --cpu-shares=256 -p $IMAGE_NAME
Run Code Online (Sandbox Code Playgroud)

主机系统(RHEL 7)具有4核和8G内存。基本上,我想限制容器的可用内存和CPU。成功启动容器后,我打开了bash并尝试从容器内查找限制信息。但是我无法获得正确的信息。

我尝试了这个:

sudo cat /proc/meminfo
Run Code Online (Sandbox Code Playgroud)

结果是:

主机系统 内存总数:8008812 kB内存可用量:7416404 kB内存可用量:7537332 kB
Docker容器 内存总量:8008812 kB内存可用量:7318052 kB内存可用量:7498764 kB

同样,我想获得CPU限制:

grep -c ^processor /proc/cpuinfo
Run Code Online (Sandbox Code Playgroud)

结果是:

主机系统 4
Docker映像 4

似乎容器不可见由容器强制执行的CPU和内存限制。我也尝试查询cgroup信息。

mkdir -p /tmp/memory
mount -n -t cgroup -o memory cgroup /tmp/memory
Run Code Online (Sandbox Code Playgroud)

然后我看一下cgroup文件:

[root@engrlab memory]# cat /tmp/memory/memory.limit_in_bytes
9223372036854771712
Run Code Online (Sandbox Code Playgroud)

该数字大于主机系统的实际内存。

有没有办法验证是否在容器中正确设置了资源约束?如何从容器中找到资源约束信息?感谢任何建议。

linux containers linux-kernel cgroups docker

10
推荐指数
2
解决办法
2万
查看次数

从属节点不在Yarn ResourceManager中

我已经建立了一个3节点的Apache Hadoop集群.在主节点上,我可以看到

[hadoop-conf]$ jps
16856 DataNode
17051 SecondaryNameNode
16701 NameNode
21601 ResourceManager
21742 NodeManager
18335 JobHistoryServer
Run Code Online (Sandbox Code Playgroud)

在奴隶节点上,我明白了

[fedora20-template dfs]$ jps
28677 Jps
28510 NodeManager
27449 DataNode
Run Code Online (Sandbox Code Playgroud)

我可以看到master中的三个实时节点:50070.但是,在ResourceManager Web UI(http:// master:8088/cluster/nodes)中,我只能看到主节点.为什么两个从属节点不在资源管理器中?这是否意味着它们不是用于mapreduce的资源的一部分?

hadoop mapreduce cluster-computing hadoop-yarn

6
推荐指数
1
解决办法
1万
查看次数

无服务器框架Python lambda直接返回JSON

我试图找出如何使用无服务器框架直接以 JSON 形式返回响应。这是 AWS 上具有 Lambda 代理集成的功能。全部默认设置。目标是从 python lambda 函数中,HTTP 响应客户端直接获取到 JSON 对象,而不是 JSON 的字符串序列化。

python 处理程序就像这个一样简单

    def handle(event, context):
        log.info("Hello Wold")
        log.info(json.dumps(event, indent=2))
        return {
            "statusCode": 200,
            "body": {"foo": "bar"},
            "headers": {
                "Content-Type": "application/json"
            }
        }
Run Code Online (Sandbox Code Playgroud)

该函数如下所示:

    functions:
      report:
        handler: handler.handle
        events:
          - http:
              path: api/mypath
              method: post
              authorizer: aws_iam
Run Code Online (Sandbox Code Playgroud)

通过这些配置,我在 Postman 中得到的响应 BODY 是:

    {
        "statusCode": 200,
        "body": {
            "foo": "bar"
        },
        "headers": {
            "Content-Type": "application/json"
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以这很奇怪,为什么我把所有东西都当作身体?如何正确配置它以便我只获得“真实”主体?

python aws-lambda aws-api-gateway serverless-framework serverless

6
推荐指数
1
解决办法
5336
查看次数

maven-javadoc-plugin sourceFileExcludes 不起作用

我不太确定使用此标签的正确方法是什么,但我这样使用它:

<sourceFileExcludes>
  <exclude></exclude>
  <exclude></exclude>
</sourceFileExcludes>
Run Code Online (Sandbox Code Playgroud)

它根本不起作用。似乎 Maven 中有一个已知的错误,该标签将无法工作,因为我发现了这些线程: https ://stackoverflow.com/a/26223872/3209177

但那是不久前的事了。我在maven网站上也没有找到太多有用的信息。

那么,当我们使用 Maven 构建 javadoc 时,如何排除某些源文件/类呢?

maven maven-javadoc-plugin

5
推荐指数
1
解决办法
1724
查看次数

Excel中的Sigma或Summation功能

给定一个值(在单元格中),计算如下公式:

Σ(3i + 1)表示i从0到单元格中指定的值.

SUM(),SERIESSUM()在这种情况下不适合.我怎样才能在Excel中执行此操作?非常感谢!

excel

4
推荐指数
2
解决办法
3万
查看次数

jline2 中 CTRL+C 是如何处理的

我很难理解如何在 jline2 中处理CTRL+ C。我发现consoleReader.readline如果handleUserInterrupt设置为true就会抛出异常。但是我想知道在抛出这个异常之前,CTRL+C是如何被捕获和解释的(而不是退出程序)?

java unix jline sigint shutdown-hook

2
推荐指数
1
解决办法
631
查看次数

无法删除json元素

我有一个节点js函数:

function func() {
  USER.find({},function(err, users){
    user = users[0];

    console.log(user); // {"name":"mike", "age":15, "job":"engineer"}
    user.name = "bob"; //{"name":"bob", "age":15, "job":"engineer"}
    delete user.name;
    console.log(user); // {"name":"mike", "age":15, "job":"engineer"} name still there??
  });
}
Run Code Online (Sandbox Code Playgroud)

这里USER是一个mongoose数据模型,find是查询mongodb.如果没有错误,回调提供一个用户数组.用户数据模型看起来像

{"name":"mike", "age":15, "job":"engineer"}.

因此,回调被调用并在用户中传递,我得到第一个用户并尝试从用户删除"名称".有线部分是我可以正确访问值并修改值.但是如果我'删除user.name',则不会从json对象用户中删除此元素.这是为什么?

mongoose node.js

1
推荐指数
1
解决办法
1757
查看次数