首页 帮助中心 听云Server 微服务容器内存设置
听云Server

微服务容器内存设置

目前在听云Saas Server中,支持两种探针授权(普通探针授权和微服务探针授权),以满足不同的使用场景。以下是这两种探针的介绍:

  • 普通探针:是指部署在物理服务器或者非Docker虚拟服务器上的探针。
  • 微服务探针:是指部署在Docker内,且Docker的内存小于2G的Java探针。(注:支持Java 2.6.2及以上版本,其他语言探针暂不支持微服务探针的授权模式。)

内存获取原则

普通探针的安装方式、计费方式等都与以往保持一致,未发生变更。而微服务探针的识别方式、安装方式、计费方式等相对特殊。

首先,识别微服务探针的两个必要条件是:部署在Docker内且Docker的内存小于2G。从Java探针V2.6.2版本以后,探针不但能识别部署环境是否为Docker,还能采集到Docker内操作系统的内存大小。

Docker内存获取的原则是:获取宿主机(CentOS 7)文件 /proc/meminfo 和Docker容器内文件/sys/fs/cgroup/memory/memory.limit_in_bytes的最小值。

  • 如果容器未设置内存限制,则探针获取 /proc/meminfo中内存大小的限制。
  • 如果容器设置了内存限制,且内存限制小于/proc/meminfo 中内存大小,则探针获取 /sys/fs/cgroup/memory/memory.limit_in_bytes 中内存大小的限制。
  • 如果容器设置了内存限制,且内存限制大于/proc/meminfo 中内存大小,则探针获取/proc/meminfo中内存大小的限制。

说明:目前Java V2.6.2探针只能获取部署在CentOS 7及以上版本的Docker的内存限制。

设置Docker限制内存

Kubernetes(k8s)

Kubernetes的简称是k8s,它是一个全新的基于容器技术的分布式架构领先方案,它能在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。

在k8s中部署探针时,可以通过在YAML对象配置文件中增加limits.memory,对容器的内存进行限制。如果memory的值小于2G,该探针会被识别为微服务探针。例如:

containers:
- name: wp
    image: tomcat
    resources:
      limits:
        memory: "2048Mi"

更多详细说明参见:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory

Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器完全使用沙箱机制,相互之间不会有任何接口。

在Docker中部署探针时,可以通过run -m参数限制分配的内存。例如:

docker run -m 2048m [镜像名]

如果限制的内存小于或等于2G,该探针会被识别为微服务探针。更多详细配置说明参见: https://docs.docker.com/v17.09/engine/reference/commandline/run/