最近与几个大佬闲聊之际,发现很多人都在不约而同地吐槽 Azure 的效能。综合的来的意见不外乎是云盘I/O过慢(HDD/SDD 一样卡)、主机响应迟钝没反应、运行更新耗时大半天,期间CPU效能满载或时处于半宕机状态等等糟心体验,主要是还贵。贵!是毋庸置疑的,毕竟产品品牌定位就是高端货,不可能做到灵车的价格。但我想说的是很多时候产品本身并无问题,只是食用姿势不对。今天博主来说说最常用到的乞丐版B1ls,就是每月不到5美元但不包流量的突发性实例。我们先来看看该实例的配置:
一、实例配置
Size | vCPU | RAM | Base CPU perf | Max CPU perf | Cr/hr | Max credits | Max cached IOPS/Mbps | Max uncached IOPS/Mbps |
Standard B1ls | 1 | 0.5GiB | 5% | 100% | 3 | 72 | 200/10 | 160/10 |
从上面的列表我们可以得出以下重点:
- 系统的读写IOPS性能被限速在10Mbps(相当于1.25MB/s,你的U盘可能还比它快几十倍),所以论你用HDD或SSD云盘,使用体验不会有太大差别;
- CPU的基准效能为5%,CPU积分72封顶。这个我们可以理解为:主机在完全闲置的状态下,每秒可以获得0.05个CPU积分,而从CPU积分从0累计到72的过程最快需要24小时;
- 72 个 CPU 积分可以让主机以 100% 效能连续运行 72 分钟(一天的 5%),或是以50%效能运行144分钟,如此类推。
这就很好理解了对吧?B1ls和突发实例就那么回事。说穿了,Azure的B系列就是对标AWS的T3/T3a/T2系列或阿里云的t5/t6突发实例。
二、为什么会卡?
除非你挖矿或不停循环测速,否则在正常的个人使用场景下并不会持续跑满100%CPU。即是说B1ls其实还是具有很大的可玩性。而且最起码还有 5% 的保底效能,不至于完全没反应的。持续哈曼卡顿的原因是因为Azure给你挖了两个坑:waagent和swap。
三、WALinuxAgent (waagent)
Azure的云系统镜像都预载了Azure Linux 代理waagent (在Ubuntu系统下名为WALinuxAgent ),该代理的主要功能是促成虚拟机与Azure结构控制器之间的交互,以提供虚拟机的配置服务(比如部署SSH公钥和设置主机名)和基本的诊断服务。由于代理与结构控制器的信息流通是实时的,在配置不高的乞丐版主机使用时会出现占用CPU资源高达50%的情况。
四、Swap 交换空间
Azure 一向都是面向高端用户,在内存充足的情况下,交换空间可有可无,设置不对时还会导致系统减速。但对只有372M可用内存的乞丐版主机来说,Swap 的设置尤其重要。在运行sudo apt upgrade时的卡顿就是因为内存吃紧而导致的。
五、其他优化设定
Ubuntu Linux的预设的最低系统内存为64M,这对于乞丐版主机来说有点奢侈啊。我们可以透过在/etc/sysctl.conf内加入以下代码来把内存最低值改为18.6M,即可用内存的 5%:
vm.min_free_kbytes = 18600
基于云盘10Mbps的感人IOPS,我们也可以顺便把系统设定为非必要时不要使用交换空间(100=优先使用交换空间,0=非必要时绝不使用交换空间):
vm.swappiness = 5
改好了存档后执行sysctl -p便可马上应用新的设定。
以上是我个人采用对Azure乞丐版B1ls的食用姿势,仅供参考!