虚拟化环境下如何监控VM的CPU是否超售?

在政府项目中,Tomcat重启时间长达10分钟以上。通过排查发现虚拟机的%steal指标过高,表明存在CPU超售问题。迁移至新服务器后问题得到解决。

       最近在做一个政府项目,客户租用的联通云服务器,CentOS7.1,32C,64GB,互联网带宽10M,内部带度1000M;我们的应用部署在Tomcat中。按说这个配置是非常不错的,政府类的项目通常访问量不高,负载也不大,但是负责实施的人员反映系统每次重启Tomcat时间非常长,一般都在10分钟以上。通常我们的应用在开发环境中重启也不过30-40秒,最多没超过1分钟的,所以我们觉得肯定不是应用程序的问题,初步判断为操作系统层面或服务器硬件层面的问题。于是连到内网检查操作系统配置信息,没看出有什么异常,重启Tomcat应用,后台的tomcat的日志输出非常慢,几秒钟才输出一行,果然所实施同学所说一样;于执行top命令,从top命令的结果观察来看,系统的负载非常低,不到0.5;User CPU使用率也很低,IO wait也不高,但是%steal这个CPU指标比较高,达到20-30%。由于之前很少关注这个CPU指标,觉得它非常可疑,上网查询%steal指标的含义,明确如下:

From ibm:

Steal time is the percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor.

你的虚拟机(VM)会与虚拟环境的宿主机上的多个虚拟机实例共享物理资源。其中之一共享的就是CPU时间切片。如果你的VM的物理机虚拟比是1/4, 那么它的CPU使用率不会限制于25%的CPU时间切片-它能够使用超过它设置的虚拟比。(有别于内存的使用,内存大小是严格控制的)。

       从现象来看,由于CPU超售引起VM时间片分配严重不平均,我们所有的VM启动和运行缓慢的原因大体上定位到,于是打电话给对方的技术人员,他们检查后说将我们的VM迁移到别的物理机上,10分钟后迁移完成,重启应用,结果所我所愿,运行非常快,不到30秒即完成TOMCAT的启动,问题解决了。

       以前从来没有遇到过传说中的CPU超售问题,原来联通也会糊弄客户啊。

       请使用云服务器的同学一定要关注%steal指标,防止被无良云服务器提供商坑一把也不明白怎么回事。

参考:https://www.cnblogs.com/menkeyi/p/6732020.html

 

### 回答1: 在Kubernetes中,发和超售是指容器运行时所需的资源(例如CPU,内存)与节点实际可用资源之间的差异。 发(Overprovisioning)是指将节点上的资源分配给多个容器,过了节点实际可用的资源。这样,即使某些容器需要更多的资源,它们也可以继续运行,但会影响到其他容器的性能。发的优点是可以提高资源利用率,缺点是可能会导致系统的不稳定性。 超售(Oversubscription)是指将更多的容器分配给节点,而不考虑节点的实际可用资源。这样可以更好地利用节点的资源,但是如果所有的容器都需要更多的资源,系统就会出现性能问题。超售的优点是可以更好地利用资源,缺点是可能会导致系统的不稳定性。 因此,发和超售都是权衡资源利用率和稳定性之间的问题。在实际应用中,需要根据实际情况进行调整和优化。 ### 回答2: K8s是一种容器编排工具,用于管理和调度容器化应用程序。它可以在集群中动态分配和调度应用程序所需的计算资源。而在K8s中,发和超售是两个不同的概念。 发是指将计算资源分配给容器,过了物理主机所实际拥有的资源。例如,在一个宿主机上,如果有4个容器,每个容器被分配了2个CPU核心,而宿主机实际只有2个CPU核心,那么每个容器就被发了1个CPU核心。这种发的行为可以通过设置参数来控制,但会增加容器之间资源竞争的可能性,并可能降低性能。 而超售是指在K8s集群中,将计算资源分配给容器的总量过了实际可用的资源总量。例如,在一个集群中,如果总共有100个容器,每个容器被分配了1个CPU核心,而集群中实际只有80个CPU核心,那么容器的总量被超售了20个CPU核心。这种超售的行为可以通过K8s的资源配额和调度机制来控制,但会增加集群中的资源争用和调度问题。 总结来说,发是指给单个容器分配的资源过宿主机实际拥有的资源,而超售是指在整个集群中分配的容器资源总量过实际可用的集群资源总量。发和超售都有潜在的风险和挑战,需要根据实际需求和资源情况来合理调整和控制。 ### 回答3: K8s发和超售是两种不同的资源管理策略。 K8s发是指在Kubernetes集群中,将多个容器或Pod调度到同一个节点上,过节点的实际资源限制。这意味着每个Pod的资源请求可能过了节点的可用资源。发可以增加资源的利用率,但可能会导致节点资源不足,从而影响容器或Pod的性能和可靠性。 另一方面,超售是指在虚拟化环境中,将更多的虚拟机(VM)或容器调度到物理服务器上,以过服务器的实际资源容量。这意味着每个虚拟机或容器的资源配额可能过了服务器的可用资源。超售可以提高硬件利用率和成本效益,但当所有VM或容器同时需要大量资源时,会导致性能下降或甚至系统崩溃。 总结而言,K8s发是在容器编排系统中,为了更好地利用节点资源,允许将多个容器或Pod调度到同一个节点上。而超售是在虚拟化环境中,为了提高硬件利用率,允许将更多的虚拟机或容器调度到物理服务器上。两者的区别在于发是在容器层级进行资源分配,而超售是在物理服务器层级进行资源分配。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值