淘宝主站Cgroup资源控制实践
一台物理机跑更多虚拟机 .更好的组合应用,做到集群利用率均衡 .消耗资源多的和少的部署在一起 .核心应用和非核心部署在一起 .如果某台虚拟机流量上升需要更多资源,给它分配的内存和cpu也增加,反之亦然。 ### 淘宝主站Cgroup资源控制实践 #### 一、项目背景及目标 淘宝主站面临的主要挑战是如何在保证稳定性和响应速度的前提下,最大化地利用物理机资源。传统方式下,每台物理机上运行着有限数量的虚拟机,这导致了资源分配不均等问题,特别是在高峰期和低谷期资源需求波动较大的情况下。为了改善这一状况,项目团队决定采用Cgroup技术来优化资源管理和调度。 **具体目标如下:** 1. **提高单台物理机的虚拟机密度:** 在确保系统稳定性的基础上,尽可能多地在同一台物理机上部署虚拟机。 2. **实现资源的灵活调配:** 根据虚拟机的实际负载情况动态调整其可用的CPU和内存资源。 3. **优化集群的整体利用率:** 通过将不同类型的应用混合部署,使得资源得到更均衡的利用。 4. **降低监控和运维成本:** 在实施资源优化方案的同时,尽量减少对现有监控和运维流程的影响。 #### 二、Cgroup技术简介 Cgroup(Control Groups)是Linux内核提供的一种用于资源管理和隔离的技术,它可以将多个进程组织成一个组,并对这些组的资源使用进行限制或监控。Cgroup支持多种不同的资源控制器,例如: - **cpuset子控制器:** 用于指定进程组可以访问的CPU和内存节点。 - **memcg子控制器:** 用来限制进程组可以使用的物理内存总量,但不包括内核自身使用的内存。 - **blkio子控制器:** 限制进程组的磁盘I/O带宽。 通过这些控制器,Cgroup能够实现对进程资源使用的精细化管理。 #### 三、技术实现与应用场景 在本项目中,Cgroup技术被应用于xen虚拟机上运行的Java应用,旨在实现资源的动态分配。具体应用场景包括: 1. **虚拟机资源的动态调整:** 当某台虚拟机的流量上升时,自动增加其可用的CPU和内存资源;反之则减少。 2. **虚拟机的混合部署:** 将资源需求高和低的应用混合部署在同一台物理机上,以平衡整体资源使用率。 3. **核心应用与非核心应用的共存:** 核心应用和非核心应用可以在同一台物理机上同时运行,通过Cgroup进行资源隔离和优先级设定。 #### 四、技术细节 1. **硬件配置:** 使用双路Xeon处理器,配备48GB内存。 2. **应用特点:** 多数应用为非交易相关的Java应用,本地不保存重要数据且无状态。这意味着它们对磁盘I/O的需求较低,主要资源需求集中在CPU和内存。 3. **资源控制:** 通过Cgroup技术,可以根据应用的实际负载动态调整分配给各个虚拟机的资源。 4. **兼容性考虑:** 对于不同类型的虚拟化技术(如Xen、KVM等),Cgroup的兼容性和支持程度有所不同。例如,Xen和KVM可以通过GuestOS CPU热插拔机制支持CPU资源的动态增减,而LXC则通过cpuset和CFS组调度来实现。 5. **性能与安全性:** 相比于传统的虚拟化技术,LXC能够提供接近本地环境的性能,但其安全隔离性相对较弱。因此,在内部集群环境中使用LXC时,需要额外注意系统的安全性问题。 #### 五、存在的问题及对策 1. **安全隔离性不足:** LXC的安全隔离性较差,可能导致应用之间的相互干扰。解决方法是加强系统的安全措施,比如定期进行安全审计。 2. **监控工具不兼容:** 许多常用的监控工具(如top、sar等)无法识别Cgroup环境下的容器。对此,可以通过自定义修改内核的方式改进监控工具,使其能适应新的环境。 3. **资源管理策略制定:** 需要重新评估Java应用的GC堆大小设置以及memcgroup的上限,确保资源的合理分配。 4. **内存管理:** 当内存达到上限时,匿名页可能会被交换到磁盘上,这可能会影响性能。对于大量Java应用的情况,可以通过优化GC策略来减轻此问题的影响。 通过引入Cgroup技术,淘宝主站在提高资源利用率的同时,还实现了资源的灵活调配,为大规模集群提供了有效的解决方案。
- 「已注销」2014-06-16不错, 有帮助,谢谢分享
- 粉丝: 261
- 资源: 392
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
- 基于Java的财务报销管理系统后端开发源码
- 基于Python核心技术的cola项目设计源码介绍
- 基于Python及多语言集成的TSDT软件过程改进设计源码
- 基于Java语言的歌唱比赛评分系统设计源码
- 基于JavaEE技术的课程项目答辩源码设计——杨晔萌、李知林、岳圣杰、张俊范小组作品
- 基于Java原生安卓开发的蔚蓝档案娱乐应用设计源码
- 基于Java、Vue、JavaScript、CSS、HTML的毕设设计源码