新建ssh连接没有反应,好在此前已经有一个ssh terminal连在服务器上,top命令打下去就没有响应了,等了几分钟终于出来结果。发现top的进程列表排在最前面的是两个进程kscand和 kswapd,注意到swap分配的内存为0,被使用的swap内存也为0. 因为cpu太忙,输入的命令都不可能,通知测试人员先把测试服务器的应用停了下来。为什么swap内存没有分配了,fdisk -l 发现 /dev/sdg2 是swap对应的分区,检查/etc/fstab 发现swap对应的设备是/dev/sda2,奇怪磁盘设备的编号怎么不一样了?
通过powermt查看存储的磁盘路径,有2个lun分配给系统,lun 3有2个通道设备/dev/sda,/dev/sdc,lun 8有2个通道设备/dev/sdb,/dev/sdd,记得机器安装配置时lun分配的设备应该只有lun 3。lun 8是后加的,印象中记得以前本地硬盘的设备编号是/dev/sda。应该就是这个导致了系统的load飙高,因为没有swap,导致系统的内存有4G被用 作swap,导致页换进换出,系统消耗的cpu很高。swapon /dev/sdg2,编辑/etc/fstab的swap设备,重新mount -a.
通知测试启动环境应用,故障消失。检查db日志和v$pgastat都没有发现异常,因为应用被强制停止的,所以当时在运行的sql和等待事件都没法知 道。但从现在来看应该是swap导致了这次的问题,什么原因导致swap的设别名被更改了,还真不太确定,不知道跟上次动态从存储分配一个lun过来有没 有关系。