问题场景

  • 本月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操作系统,在内存或磁盘空间不足时,会优先限制虚拟机的服务
  • 保持一个良好的心态,遇到问题,及时沟通,耐心解决吧!