此文已由作者叶富宏授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
今天需求提测遇到件怪事,QA在测试环境发布我提交的分支后,不能打开页面。第一感觉是QA发布过程出问题了,因为我本地测过没有问题才提测的。经过接下来的一系列验证,该分支本地依旧能发布成功并且访问,测试环境确实有问题!
自动部署系统确实方便,一键发布,但是出问题就比较慌了。下面是我查找问题的过程记录一下,不希望大家遇上这种问题,如果遇上了,希望对大家有借鉴的作用。
首先我查看了一下,测试环境的发布日志:
看到日志的时候,心里也是有点虚,查了一下“Illegal access: this web application instance has been stopped already”,发现这个异常的原因:是在关闭应用服务器或重新部署装载项目失败会发生。当应用程序卸载时,并不会关闭所有的线程。当tomcat已经关闭了其类加载器后,一些线程依然会继续运行,这样就导致出错,这些错误就会被到日志文件里。(http://blog.sina.com.cn/s/blog_7fd593970101eyqt.html)也就是说这段日志其实毛用都没有。
继续往上查看日志发现:
发现有个Error,但是没有关于这个Error的任何信息。
根据这个错误信息,在网上搜索了一下,找到了两篇文章,介绍如何把错误信息详细打印出来:
http://stackoverflow.com/questions/12873674/org-apache-catalina-core-standardcontext-startinternal-severe-error-listenersta http://grails.1312388.n4.nabble.com/Deployment-problems-td4628710.html
方法:在WEB-INF/classes目录下新建一个文件叫logging.properties,内容如下:
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = servlet-examples.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
照着试了一下,发现确实有效,错误信息如下,其实只要错误打印信息出来了,问题也就解决了。
最后的问题是:开发过程中新增了一个dubbo接口,在本地的配置文件里面有接口group的配置,但是在测试环境的配置文件里面忘记了加上。
其实最开始的时候心里也知道大概是测试环境的配置文件有问题(因为本地是正常的),也对配置文件进行了检查,不过各种配置项太多了,最终还是没有找到问题。
虽然最后找到的问题原因有些乌龙,不过也算是一次不错的经历。
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 测试角度的并发和幂等问题总结
【推荐】 Apache流框架Flink,SparkStreaming,Storm对比分析(二)