disconf
disconf copied to clipboard
tomcat8下启动成功后会重启一次
tomcat8启动后几秒钟后会重启,tomcat7下正常
看起来像是zk的问题?我回头在tomcat8下试试
我使用的tomcat版本是8.0.37
我也遇到这个问题tomcat8会重启一次。
但是,如果把集成应用里的disconf.properties也加到reload的xml列表里
<bean id="configproperties_disconf" class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:disconf.properties</value>
</list>
</property>
</bean>
在管理端disconf.properties修改,则情况会多次出现
在zookeeper的机器上 shell> netstat -antp | grep 2181
就会看到 tcp6 0 0 10.206.19.210:2181 10.206.16.100:63629 TIME_WAIT -
出现TIME_WAIT了,导致客户应用里zk抛出异常,直到zk那里连上为止
这个异常的原因,是某些zookeeper的类没有加载到。 最终原因分析 梳理下整个流程: Tomcat启动,初始化webcontext; 初始化spring, spring初始某些些bean,这些bean包括了zookeeper的连接相关的bean; 这时zkClient(独立线程)已经连接上服务器了,但是classloader没有加载到org/apache/zookeeper/proto/SetWatches类; spring初始化失败,导致Tomcat webcontext初始化也失败,应用在挂起状态,但zkClient线程还是正常的; zookeeper服务器重启,zkClient开始重连,连接上zookeeper服务器; zkClient触发watch的一些代码,ClassLoader尝试加载org/apache/zookeeper/proto/SetWatches类,但是发现找不到类,于是抛出异常; zkClient捕获到异常,认为重连失败,close掉connection,休眠几秒之后,再次重连; 于是出现了zkClient反复重试连接zookeeper服务器,而且都是秒连秒断的情况。
增加zk机器可以缓解些,完全解决方案目前还没有,希望后来人。。。
classpath:disconf.properties
这种写法肯定是错误的
可能是tomcat8的问题,
对于tomcat,由于其会自动扫描webapp目录下面的文件改变,需要指定disconf.user_define_download_dir到webapp外面,避免disconf更改properties文件导致tomcat去reload web 应用。试过这样配置web app就不自动refresh了。
Web context reload的时候会去destroy原来的web app,如果webapp对于停止处理不好就会导致失败情况
有没比较好的方法,tomcat如果设置了reloadable的话还是会影响到的
这个我的是会无限重启,换成tomcat7 问题解决