获取容器内的 docker cpu/内存限制

时间:2021-01-03 14:57:38

标签: java docker

我正在我的 dockerized 服务器中实现一个功能,当 CPU 和内存利用率过高时,它会忽略一些请求。

我已经找到了如何获取容器here内进程使用的内存和cpu时间,但我还需要一种方法来获取cpu限制和内存限制(由Runtime Options设置)来计算百分比。

此外,我可以从 /proc/loadavg 读取主机系统的负载,是否有我可以读取的“每个容器负载”?

我在 openjdk 14 上使用 Java/Kotlin。

更新:我发现我可以从 /sys/fs/cgroup/memory/memory.limit_in_bytes

获得内存限制

1 个答案:

答案 0 :(得分:1)

这都是由cgroups控制的。因此您可以检查 cgroup 限制和利用率:

export const builderReducer = createReducer(
  initialState,
  on(BuilderActions.setSelectedCourseContentUid, (state, { selectedCourseContentUid }) => {
    return {
      ...state,
      selectedCourseContentUid,
    };
  })
);

内存使用情况和限制非常容易监控。这比监视 Java 堆使用情况更准确,因为堆只是 Java 使用的内存的一部分。

此期间的 CPU 配额为您提供了分配的小数 CPU 数量,150000/100000 = 1.5。您可以随着时间的推移监控 cpuacct.usage 以计算它何时超过限制并限制您的进程。

相关问题