问题场景
- 本月7月10日处理了一个虚拟机被强制暂停的问题,详见:在Windows server 2012上使用virtualBox运行
CentOS7
虚拟机,被强制暂停 - 当时是由于
C盘
存储空间不足,导致虚拟机被强制暂停,将虚拟机迁移后,问题解决。我当时还和客户说,这1.5T硬盘,用到平台更换都不会出现这个问题了(打脸了,出现类似问题了,虽然不是同一个) - 在7月26日,客户反馈又被暂停了,虚拟机已休眠,而且桌面时间显示“7月20日”,看样子客户一周没访问平台了,这都被休眠一周了才发现
- 休眠之后,恢复不了,其他按钮灰色的,只能点击“
关闭电源
”,想着先把虚拟机关掉,再重启试试 - 当时没有截图,截图用的是之前的,这次显示的是“
已休眠
”,还不是“已暂停
”
- 点击“
关闭电源
”之后,发现,也没用,卡着进度条半天不动,没办法,只能重启服务器了 - 服务器重启后,虚拟机启动,一切正常(无语)
问题排查
- 状况和上次类似,但又不太一样,都是虚拟机被停止,无法恢复
- 上次是
暂停
状态,这次是休眠
状态 - 上次是虚拟机启动成功后一分钟左右,变成
暂停
状态;这次是启动后恢复正常
- 为了防止上次的磁盘空间问题,特意查看了
C盘
,还有100多G,没问题 - 同样有一点不容忽略的是,这次服务器重启后,仍然运行了一堆乱起八糟的东西,不是我们平台需要的
- 我初步怀疑是这些程序运行,导致我的虚拟机被系统暂停掉了。另一位同事表示这个平台之前就有这些东西,没问题的,不要老怀疑服务器有问题
- 我也没办法,部署了十几个地方,就这地方有问题,我肯定要怀疑服务器有问题啊,而且这还不是一个干净的、只有我们程序的服务器,我肯定怀疑这些程序有影响啊
- 和领导汇报了情况,领导表示,为了防止虚拟机继续出问题,直接把系统格掉重装一个
Linux
吧,这是个简单的好办法 - 和客户的运维方沟通了下,发现服务器使用了
磁盘阵列
,很难重装,头疼
- 客户运维方后面又反馈了一个情况,说这台服务器不是给我们独用的,还有一个其他平台装在这上面,所以没法重装系统
- 这次真是大无语了,我们得到的信息一直是这台服务器单独给我们平台使用
- 基于只有我们使用的考虑,我们优化人员当时在安装平台时,直接给虚拟机分配了巨量内存(
220G
,总内存256G
)
- 这次原因找到了,我们平台部署启动时没问题,当另一个平台也在上面启动时(看了下启动后占用了
40G
内存),内存就不够用了 - 当系统内存不够用的时候,
Windows
操作系统会优先暂停虚拟机,保证自己主机上的其他程序使用,我们的虚拟机就被休眠了
- 其实我们平台对内存和
cpu
的要求其实也不高,64G
内存就足够了,不用占用太多内存,分配太多反而可能会影响宿主机运行,改成64G
后,整个服务器运行状况就比较健康了 - 还有另一个坑,
VirtualBox
读出来的cpu
数量不准。我们优化人员一开始设置的处理器数量为8,客户方运维说这台服务器处理器只有双CPU
,频率是自动的,只能填2,不能填8
总结
- 服务器环境一定要搞清楚,有时候客户自己也搞不清楚服务器状况,我们自己不能盲目信任客户的信息,要自己多排查一下,要和实际维护服务器的人员沟通一下
- 遇到的问题(例如本次的服务器重启一堆乱七八糟我们不了解的服务),一定要彻底的去搞清楚解决,不然一定会复现的,或者以其他角度复现
VirtualBox
的虚拟机配置要合理,要根据宿主机实际的cpu
和内存情况,不能盲目的设置很大,够用就行- 使用虚拟机的服务器,一定要注意磁盘空间和内存使用情况,因为
Windows
操作系统,在内存或磁盘空间不足时,会优先限制虚拟机的服务 - 保持一个良好的心态,遇到问题,及时沟通,耐心解决吧!