9.16下午1点多,台风“山竹” 肆虐,突然接到同事电话,说机房门口进水,需要紧急将机房所有系统关闭,紧急通知其他所有系统负责人,VPN远程登录系统执行关机。不久所有系统关闭完成。
9.17早上公司通知放假,上午大家正好可以过来开机,9点多,大家到达公司,发现ERP服务器面板指示灯还是绿色的,也就是说机器没有实际关闭,可是从客户端已经Ping不通该服务器,网络已经断开了。
与系统管理员商议,决定按电源按钮强制关机。
关机后重启,显示磁盘已经超过300天没有检查一致性了,启动检查,大约30分钟后,完成所有磁盘检查。
机器终于启动了,从客户端成功登陆,启动DB,看上去一切顺利。
01 发现问题
DB开启后,通知外围系统启动,OA,COP,WEB系统相继开启。。。
突然Web系统管理员反映连接不上数据库,赶紧用本机数据库客户端连接测试,果然,提示Session数超过连接上限。
用SYS账号连接,检查GV$RESOURCE_LIMIT 视图,发现Session数量已经到达900,刚好是系统设置最大允许连接数。
为何数据库刚一启动,就这么多的Session?
02 尝试解决
首先怀疑是Oracle DB中有异常Session。
尝试将DB正常关闭,关闭不了,用Abort方式强行关闭,再重启,不到1分钟,Session再次达到上限。
会不会Oracle本身Job一下子起来太多?
毕竟因停机了一天,太多Pending一起启动,于是用脚本将DB中Job 全部Disable后再次重启,可问题依旧。
想不到什么原因了,决定用蛮力法,
以前写过一个杀Session及Process的脚本,先找到Terminal为“JDBC Client”的Session, 再找到对应的Process,批量全部Kill,再观察进程数,以每秒100个左右速度增加,不到10秒种,满了。再杀,再满。。。
同时通知外包顾问协助查看中。
03 意外恢复
时间快速流逝,已经11点多了,下午大家都要来上班使用系统了。
外包顾问回报,也没有找到什么原因,突然想到,会不会是外围系统导致?于是将已经启动的OA,COP系统关闭,奇迹出现了,Session数量不动了。
再逐个开启OA,COP系统,Session数量也稳定在一个数量上,
到底是OA还是COP系统造成的这个事故,竟无法得知。
04 总结
- ERP服务器需要定期重开机,以免关机故障及开机后长时间检查磁盘动作
- Session数量异常时,先考虑关闭外围系统
- ERP系统需要建立备用系统,当主系统故障时,可以快速替换
网友评论