一次定位“应用无法访问”的过程总结

最近在预研产品的虚拟化部署,装了几次应用。今天装完以后发现无法访问,就定位了一下。虽然不复杂,还是记录一下:

jboss的版本是4.2.3,很老的版本,日志和目录结构不是很熟

1. 访问http://ip. 193:port/xxx,失败,显示的是jboss没有启动的样子,而不是404,500什么的

2. 查看jboss/bin/nohup.out,看到有如下异常:
Caused by: java.rmi.UnknownHostException: Unknown host: xxx.site; nested exception is:
java.net.UnknownHostException: xxx.site

想到是hostname配置的问题,修改/etc/hosts

以上解决了jboss启动过程中,由于某个listener抛出异常,导致jboss未正常启动的问题

3. 再次访问http://ip. 193:port/xxx,还是失败,仍然显示JBOSS未启动

4. 再次查看jboss/bin/nohup.out,看出JBOSS已经正常启动

5. 于是尝试访问http://ip. 193:port/,不加应用路径,看到了jboss的首页,证实jboss已经启动

6. 打开fiddler2,尝试抓包,发现当访问http://ip. 193:port/xxx时,会跳转到代理服务器http://ip. 194:port/

7. 但是我没有安装代理服务器,所以在 194:port端口上,没有应用响应HTTP请求,故失败

8. 在194上安装代理服务器,问题解决

jboss相关日志:

/opt/company/log,这是应用写的日志
/opt/company/product/jboss/server/default/log,这是jboss写的日志
/opt/company/product/jboss/bin/nohup.out,这是jboss的启动日志

为什么会直接跳转:

web app的web.xml中设置了一个/*的filter,其实是CAS的SSO filter,将所有的http request跳转到194上。所以加上应用路径就会触发跳转,造成失败;只用ip+port访问,可以看到jboss已经启动了

总结:

1、web容器本身的日志对于问题定位很重要,光靠应用本身的日志,有时候会遗漏重要信息,越烂的应用越是如此

2、判断jboss是否正常启动,可以用不加应用路径的方式,看看是否能访问到jboss的首页;也可以看jboss/bin/nohup.out文件

3、定位奇怪的web app问题时,抓包工具很好用。http watcher和fiddler2都不错

猜你喜欢

转载自kyfxbl.iteye.com/blog/1939867