swap导致的数据库不能访问
作者:勇斌 | 分类: 大话技术 | 标签: 大话技术 | 日期:2008-06-30
事情总是一块来的。今天因为是月底最后一天,刚好还有2个数据订正要做,正在编写脚本、同开发人员确认处理逻辑,且催得很急。不巧的是,测试db这时也出问题,load很高。没办法订正先放下来,解决测试的问题,否则影响下午的测试。
新建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过来有没有关系。
ps:
os: redhat as3 u4 机器内存8G,4cpu,sga 1.6 gb + pga 200m .



以前出过一个问题,哪就是安装os的时候连着存储的,结果导致原本 os的盘不是 sda ,存储的跑前面去了。
所以你这个可能跟 认设备的序号有关。
fcp @ July 1, 2008 |
安装os的时候具体情况不太记得,应该跟认设备有关系
勇斌 @ July 1, 2008 |
感觉在DB数据库里,尽量不要用SWAP。
一用到意味着离宕机不远了。
vogts @ July 3, 2008 |
不久前,我们有一个库,ORACLE 10g的监听发生内存泄露,SWAP空间大量使用,机器load一下就上去了,机器也很难login
zhaolinjnu @ July 4, 2008 |