遇到一个和云主机相关比较棘手的问题,分享下。使用腾讯云的云主机过程中发现了一个问题,在业务压力不大的时候,出现了高延迟的情况。
环境如下:
云主机购买的是计算网络增强型CN3-4C8G
系统:Windows Server 2016
问题描述:
经过调查发现是CPU时间片精度发生了变化,Windows在没有其他程序干预的情况下默认的CPU时间片大概是16ms。
所以在CPU负载较低的情况下,程序调用Sleep(1)的耗时大概也就维持再1~16ms区间内。
然而实际测试中发现Sleep(1)的耗时极不稳定,最高值能达到200ms甚至300ms。
经过一段时间的排查,发现这个波动和磁盘的IO的有比较密切的关系。随即写了一个测试程序进行测试。
测试程序的大致逻辑就是80个文件每秒写一行日志并刷新,然后开启另外一个程序测试Sleep(1)的耗时。
实际跑下来的CPU负载很低,但是波动很厉害
大概情况如下,5分钟的测试数据
问题反馈给平台方后,也没有对应的合理解决方案,答复如下:
后台用阿里云也进行了一轮测试:
云主机的类型为:高主频计算型hfc7 2C4G 硬盘位ESSD云盘 50G
下图是大约30分钟的数据:
虽然也有波动但是整体来说稳定不少,出现波动的频率少了非常多。
总结下:
对于计算性能要求较高的机器,应该采用本地SSD的解决方案(例如:高IO、专属云、云物理机等),云SSD会存在IO性能拖累系统整体性能稳定的情况。
另外也可以从程序上进行优化,减少文件刷新的频率,从而降低对于磁盘IO的需求。