背景: 

博客园自从上了啊里云,故障频繁,使得大伙每星期都在看故障报告,对503不知不觉也建立直了深厚的友谊。
故障从硬盘IO到SLB到应用级别的,各自怀疑,各自检测,都各自坚持没问题,但情况是问题依旧。
而解决的方式是博客园不断的购买高配,但仍逃不出503的魔掌。
最终,博客园把怀疑点指向了啊里云的CPU。
啊里云,也怀疑是博客园自身程序问题。 
对此问题,园里园外都比较关心,所以,在这背景下,我假设性的分析一下。

注意,以下内容纯属个人意淫,假设性内容,不代表符合事实,仅供各位看热门的参考:

由于啊里云和博客园各执一念,互不相让,所以个人个人只好给个折衷的猜测,都有问题,或者都没问题。

终结假设点就是:啊里云的低配配不上博客园的高需。

一:假设博客园是高需程序: 

我们假设博客园的程序, 在程序上可能混杂多款时尚组件,而无法掌握原理和核心,进而在优化上没能发挥;
导致过渡依赖缓存,而原生的程序平均执行时间长,导致缓存失守部分不能负载大量并发,造成系统负担重,需要高配来支持。

二:假设啊里云没有提供高配置:

首先,要假设啊里云的云产品,虚拟化技术并没有超过业界领先水平Xen。

然后,我们看一下以下信息(摘自互联网),来了解两个概念,CPU与VCPU:

1: 物理CPU与虚拟VCPU

xen客户机启动的时候,虚拟CPU是由dom0系统决定固定在某个物理CPU核心上的,这个分配具有随机性,比如我们的机器上有2个双核的处理 器,也就是说有4个cpu核心,同时我们分配4个核给我们的虚拟客户机,那么我们在客户机也看到4个cpu核心的,但是这四个vcpu核心并不是真的对应 着物理机器上的四个核,可能四个虚拟cpu对应的是物理cpu中的1~4个核,也就是说有下面4个可能:
4vcpu=1cpu
4vcpu=2cpu
4vcpu=3cpu
4vcpu=4cpu
vcpu指虚拟CPU核心
cpu指物理CPU核心
因 此,当我们的虚拟客户机上如果运行的是运算密集型的任务的时候,就必须看看我们vcpu与物理CPU的对应,必要的情况下手工固定VCPU到物理CPU 上,使该虚拟机可以使用所有的物理核心;而如果你正在运行IO密集型任务,那么最好就分配一个超线程或整个核给dom0,并且固定其他的域让他们不能使用 CPU 0。 

大体上就是说:虽然博客园买的是8核的,但是否真对应上物理机的8个核,这是未知数,实际情况是<=8。

所以,如果博客园买了一个高配置的8核(VCPU),实际只分配到4个物理CPU,性能就降低一半,变成低配了。

所以我们再假设:博客园运气很背:

博客分开买了4台8核,一共号称32核跑博客站,根据上述理论,实际真实CPU可能在(1-32个)具体有几个还得看人品。
如果4台机,随机都在物理4个核上,那就亏大了,高价钱买了低配置,如果在8个核上,也还是亏,如果在16个核上,还是亏一半。
所以,这是第一个假设成立,博客园就是跑在低配上。

如果,博客园运气特好,刚好分配到32个对应的物理机上,或者如果啊里云重视,亲自帮博客园改参数设置对应关系,那我们再看下面的假设。

补充假设:啊里云的CPU降低了主频,或者说是算法平均:

我们假设博客园买的8核CPU2.4GHmz主频,啊里云按8人用标准给每个VCPU分配了300MHz,这样就实现了就算8个用户都跑满虚拟的100%CPU,总物理也才刚好100%。
所以理论上,只要分配超底的主频,和限制使用人数,可以达到隔离作用。
 
但现实是,分配过低的主频,会造成CPU性能下降,资源极大浪费,所以,一般IDC商会分配在600MHz这般,这种低频一般够小站使用了。

这样如果是4个用户使用,4*600M=2.4G基本隔离,如果是8个用户使用,如果平均使用50%也基本隔离。

如果有4个人跑满,那剩下的4个人无论使用多少,肯定也就挂了,所以通过管理,只能关站,并只能清退这部分人了。
 
所以,如果啊里云把主频降的低,博客园就跑低配了;

如果啊里云主频设的高或没限制,那是不可能的,因为算法必须保证用户的平均使用率。
所以问题就是主频究竟在一个怎样的合适值中了(一般按国际标准,是1/4 CPU的限制,即4人用的标准,实际使用增加到6-8个人)。

根据大中华环境猜测,赚钱第一原则,总CPU基本核是固定的,而用户数是不断增加长的。
所以:反正限多少主频,你也看不出来,实际多少个人在共享使用,你也看不出来了。

根据以上实际性的假设,所以博客园本身就是运行在了降级的CPU上。 

假设2:CPU资源竞争

首先确定的一点,从来就没有什么救世主,也没有CPU绝对隔离一说。

说CPU独立隔离,那是客服常见的忽悠手段,稍为看一下CPU的相关知识,就知道只能靠算法来决定怎么分配而已,隔离相对限制而言。

不信我们可以看下面的摘段(取自互联网):

2012-05-22 17:22:20|  分类: 虚拟化-XenServer |字号 订阅
背景:
在Xen环境下,内存与CPU分配是可以动态改变的。通过动态更改内存与CPU分配,可以达到优化虚拟机性能的目的。
通常情况下,我们的虚拟机分配物理cpu的资源为自动分配的。当在一个物理机器上面分配多个虚拟机,并且虚拟机的cpu总和超过实际物理机器的cpu数量时,并且各个虚拟机在高负载的情况下,高负载的虚拟机会调用其他虚拟机器的资源
这次发现的问题是我们公司某系统新上线了三台虚机服务器,上线后发现,在流量是平均分配的前提下,新上的机器的负载比老机器高,新上的机器负载在8左右,而老机器的负载在4左右,查询了机器的配置和参数设置,新老机器都一样。后来通过iostat指令,发现新机票的steal值非常高,大于在40左右,而老机器的steal只有0.1左右。经与老大咨询,steal的值高会代表实体机的CPU负载高。后经由老大发现,新上线的三台虚拟机在一台实体机上,每个虚机分配了四个CPU,而实体机是个8CPU的服务器,导致了三个虚机之间征用CPU。(cpu要打开超线程!!!)

通过上述说明,CPU间是存在资源竞争的,对于资源竞争问题。

一般的IDC商家,是会对长期占用高CPU的VPS租用用户进行清退的,因为这会影响到其它用户。

而对于啊里云,目前为了用户,也在推广期,估计在管理上,用户量大,人员少,目前估计不会有这种手段,所以类似于放任用户无限制的使用CPU。

所以啊里云的用户间更容易发生抢占资源的行为。

于是博客园的程序,平时好好的,某些情况CPU不行了,可能是CPU资源互抢了,抢不过人家就503了。

为什么博客园抢不过人家,这里我也有一个假设:

虚拟技术有两个标识来标识VCPU,就是under和over,记录每个VCPU平均的负载。
如果平时高的,到资源竞争时,优先级就变低,平时低的,到资源竞争时,优先级就会变高。
看博客园的cpu截图,平时也不低,所以真到资源竞争,就没啥优势了,抢不过人家了。

所以根据以上的假设:

1:如果博客园优化下程序,不再那么需要高需;

2:啊里云提供货真价实的32核高配(对同个用户名进行开通的所有主机按实核分配),再控好分配时的实际使用人数;

3:或者啊里云的用户自觉点,别老上那些吃CPU的站;

也许。。。

再次重申,以上内容纯属个人意淫YY假设,可能与事实存在较大出入。欢迎大伙讨论。 。。

转载于:https://www.cnblogs.com/cyq1162/archive/2013/05/18/3084893.html

博客园与啊里云的故障假设:高需与低配(补充了降频论)相关推荐

  1. 给自己的博客园添加网抑云音乐播放器

    1. 申请权限 首先给自己的博客园设置,申请js权限,这个教程可以去搜. 2. 打开网页版网抑云音乐 点击一首你喜欢的歌进入 , 然后点击生成外链播放器 然后复制代码: 进入到自己的博客园设置页面 我 ...

  2. 博客园华为云百万代金券福利

    跟华为云的合作达成以后,我们积极沟通为园友们争取到了第一个福利,就是百万华为云代金券.每个通过博客园注册关联华为云的用户(也可扫下面的二维码关联),都可以收到价值100元的华为云体验券一张.实际付费超 ...

  3. 在线文本替换工具 、支持正则表达式(博客园文章里添加Javascript或<script>语句)

    概况与介绍 在博客园发布一篇文章,文章就是<在线文本替换工具 .支持正则表达式>https://www.cnblogs.com/lsllll44/articles/15522697.htm ...

  4. CSDN并购博客园遐想

    我要打"假想",打成了"遐想",不过确实这篇文章属于我个人YY出来的.主要晚上写博客,用live writer发布好多次都不成功,然后用浏览器访问博客园首页,出 ...

  5. [Debugging]分析博客园提交评论的校验规则

    今天偶然发现,在博客园同时打开多篇文章,如果短时间内分别在不同文章里提交相同内容的评论,就会提示"该评论已发表过!".一开始感觉这应该是个bug,毕竟在同一篇文章里,并不存在相同的 ...

  6. 在vscode上编写jsp_使用vscode高效编写博客园博客

    图片上传可真麻烦! 之前写博客的时候,我一般是使用马克飞象先编辑好然后直接复制粘贴到博客园中,这样做一方面可以一边写一遍预览改,另一方面可以保存到印象笔记中,这样一举两得,比较方便.可唯一的问题就在于 ...

  7. 将微博或者qq空间的说说同步至博客园 wcf+js(ajax)跨域请求(1)

    前天刚写了篇文章使用Bootstrap为你的博客园自定义轮播图片(今天将图片加载的顺序调整了下,不在访问的时候直接加载,而是页面加载最后在脚本里面动态添加dom元素),虽说技术含量不怎么高,但是大家还 ...

  8. php redis 搜索,PHP+Redis有序集合(zset)实现博客园阅读排行榜功能

    许多网站都有排行榜的功能,比如球员人气榜单.阅读排行榜,对于一些小网站,通过查数据库就能实现排行榜的功能,但是对于稍微有点用户量而且还是实时排名的网站,使用一些关系型数据库如(MySQL.Oracle ...

  9. 【分享】给自己的博客园添加一个板娘(可选)

    全部样式分享 更换模型的话只需要更换jsonpath中的模型名称即可 https://unpkg.com/live2d-widget-model-模型名称/assets/模型名称.model.json ...

最新文章

  1. Mondrian xml服务mysql_导入Mondrian例子数据库到mysql中 windows环境
  2. Git学习笔记——分支
  3. 使用.NET Core快速开发一个较正规的命令行应用程序
  4. [Head First Java] - Swing做一个简单的客户端
  5. Drbd+Pacemaker实现高可用
  6. jquery双击一行跳转页面_Word软件使用小技巧,鼠标双击在不同操作对象中有不同的功能...
  7. Direct3D顶点结构使用总结
  8. linux非对称内存,CryptoAPI与OpenSSL RSA非对称加密解密(PKCS1 PADDING)交互
  9. 量子计算机时空穿越,时光穿梭是否可行?未来人类真能穿越时空吗?科学家:不是不可能...
  10. 【学习笔记】matlab进行数字信号处理(三)数字滤波技术
  11. 从哥德巴赫说开去(3)
  12. 利用Latex在线表格绘制表格以及多行合并垂直居中
  13. 2020年陕西省高等职业院校技能大赛信息安全管理与评估赛项竞赛手册
  14. 【JZOJ A组】Melancholy
  15. 板块分析:筑底阶段 智能家居开启蓝海
  16. PC usb蓝牙发射器
  17. 万能遥控程序c语言,单片机解码万能红外遥控器的C51程序
  18. 手机异步发送短信验证码解决方案-Celery+redis
  19. 网易帐号通帮你一一列举邮箱注册过的所有网站
  20. 【Excel】+自动生成图表

热门文章

  1. 判断32位整数二进制中1的个数
  2. python—OpenCV2中 cv2.VideoCapture(),read(),waitKey()的使用
  3. FPGA跨时钟域设计的一点总结
  4. 编程珠玑第二章习题答案
  5. numpy生成随机数
  6. cookies池和proxy池
  7. mongodb气势如虹
  8. Authentication method 'caching_sha2_password' not supported by any of the available plugins.
  9. Spark、Flink、CarbonData技术实践最佳案例解析
  10. Linux系统上的文件类型