gracejh
作者gracejh2022-07-22 15:04
系统架构师, 浪潮商用机器企业云创新中心

记一例客户生产系统VIOS故障

字数 1179阅读 768评论 1赞 2

浪潮商用机器有限公司 技术支持部 白洪涛

年前一天,某企业客户在进行机房电力改造时断电重新开机之后,运维人员发现承载财务系统数据库及中间件虚拟机的 K1 Power S922 服务器开机不久就 hang 住,通过 telnet 及 ssh 登陆 VIOS 分区变得非常卡顿,执行命令等待返回时间很长,该 K1 Power S922 服务器配置 2 路 8 核 POWER9 处理器, 512GB DDR4 内存,理论上在还未开启虚拟机的情况下, VIOS 分区不应该有很大负载,但通过 topas 及 iostat 命令查看,发现其 vio_daem 进程占用大量内存资源:

并对本地硬盘产生大量读写,导致 VIOS 分区安装 rootvg 的磁盘 hdisk0 的 %tm_act 达到 97% :

通过各种手段排查,均未发现有其他异常进程及任务调用 vio_daem 进程,多次重启主机即 VIOS 分区,均未有改善,每次重启进入 VIOS 分区进入系统界面之后,内存资源均会被 vio_daem 进程迅速占用,硬盘利用率也会迅速上升,为快速恢复业务系统,客户向 IPS 厂商寻求技术支持。

IPS 获悉客户情况后,第一时间安排了技术人员与客户进行对接,通过检查,发现客户使用的 VIOS 服务器版本为 2.2.6.31 ,在机房改造关机前,客户运维人员习惯性修改了 /etc/security/limits 文件的内容,将所有相关限制改为 -1 ,即无限制,修改后的文件内容如下:

fsize = -1

core = -1

cpu = -1

data = -1

rss = -1

stack = -1

nofiles = -1

一般情况下, VIOS 的 /etc/security/limits 文件保持默认即可,根据官方说明,强烈建议不要修改这些默认值,因为这样做会导致不可预测的结果。一旦其中的 stack 值被修改为 -1 , vio_daem 进程就会允许系统根据需要固定尽可能多的堆栈,从而导致vio_daem 进程消耗大量内存。

故建议客户将 /etc/security/limits 文件内容修改回默认值,即:

fsize = 2097151

core = 2097151

cpu = -1

data = 262144

rss = 65536

stack = 65536

nofiles = 2000

修改后,重启 VIOS 分区, vio_daem 进程内存占用恢复正常, hdisk0 利用率降回正常,执行命令卡顿消除,问题得到解决。

总结:对于 K1 Power 服务器来说,通过 PowerVM 进行虚拟化后,内存及处理器的虚拟化由 hypervisor 负责, VIOS 仅负责 IO 层面的虚拟化,故而与普通的 AIX 操作系统不能一概而论,其参数设置应遵循最佳实践。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论1 条评论

yulu4314yulu4314系统工程师, 长春
2022-07-25 16:33
谢谢分享,很有帮助
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料