Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1125424
  • 博文数量: 170
  • 博客积分: 1603
  • 博客等级: 上尉
  • 技术积分: 1897
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 15:54
文章分类

全部博文(170)

文章存档

2016年(27)

2015年(21)

2014年(27)

2013年(21)

2012年(7)

2011年(67)

我的朋友

分类: 系统运维

2011-05-12 16:32:39

今天早上网站挂掉,杀掉后重启jboss卡在resource:jboss-log4j.xml,
上网搜索E文网站找到个类似的hang在resource:jboss-log4j.xml处但是没有给解决方案
中文找半天都是下面千篇一律的回答

但自用jobss是GA而不是EAP版本,所以根本搜到的内容无关。

找半天回头看日志发现jboss后等了很久终于报sql连接错误,这时候去看数据库才发现问题。
那么到底是为什么jboss会hang在resource:jboss-log4j.xml处N久以后才打印错误呢
简单来说,走到resource:jboss-log4j.xml以后jboss就本身已经启动,后面就是启动应用了,卡在这里就是启应用的时候阻塞了。
在正常情况下如果应用的数据库连接有问题,jboss会立刻报sql连接错误,但是今天出了特殊情况。

登陆数据库服务器发现,rac集群的一台机器集群已经停了(原因是hba卡连接断开了),而正在运行的那台机器其他服务都正常,srvctrl status nodeapps -n node1发现只有lsn 是not runing状态,但是netstat发现1521端口正在监听,监听进程也还在运行,srvctrl stop nodeapps报错,srvctrl stop listener也报错

srvctrl停不掉nodeapps,没办法直接停了database和asm以后关闭crs服务(关闭crs服务的时候提示还有服务在运行),停完crs服务后ps -u oracle发现监听的进程还在,kill -9杀掉在吧crs起来后监听终于running


这时候jboss就能正常启动了,原因也真相大白了——jboss连接数据库端口没有失败,所以没有立刻返回错误,但是数据库的监听程序已经出错了所以一直没返回数据,导致jboss一直阻塞在那里等待数据直到超时才报错。如果数据库本身有问题监听未运行的情况下,jboss尝试连接几次后就报错了也就不会出现这种hang住半天不报错的情况了

顺便说下上面rac那里的处理方法太蠢了,啥也不用停直接kill -9掉监听程序在用srvctrl start listener起监听就是。
阅读(2940) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~