http://crazyjvm.iteye.com/blog/1693757 文中提到相关超时问题,但是又出现了一个问题,我把min和max都设置成了180000,但是仍然出现了以下的异常信息:
Client session timed out, have not heard from server in 154339ms for sessionid 0x13a3f7732340003 ...
Client session timed out, have not heard from server in 167805ms for sessionid 0x13a3f7732340000 ...
我们循着这个异常定位到:ClientCnxn.java
又看到zk存在如下信息:
Established session 0x13a3f773235011b with negotiated timeout 180000 for client /x.x.x.x:49702
这说明我们的配置的确起效果了。那为何还会超时呢,下面几段代码可能会解答这个问题:
异常信息在这里抛出:
if (to <= 0) {
throw new SessionTimeoutException(
"Client session timed out, have not heard from server in "
+ idleRecv + "ms"
+ " for sessionid 0x"
+ Long.toHexString(sessionId));
}
而这段代码在:
/**
* This class services the outgoing request queue and generates the heart
* beats. It also spawns the ReadThread.
*/
class SendThread extends Thread {
//....
}
我们可以看到这个类负责维护发信息并且维护心跳,接着往下看这个类中的关键代码,
readTimeout = negotiatedSessionTimeout * 2 / 3; //我们设置了180s, 那这个值就是120s
connectTimeout = negotiatedSessionTimeout / serverAddrs.size();
long now = System.currentTimeMillis();
long lastHeard = now;
long lastSend = now;
while (zooKeeper.state.isAlive()) {
try {
if (sockKey == null) {
// don't re-establish connection if we are closing
if (closing) {
break;
}
startConnect();
lastSend = now;
lastHeard = now;
}
int idleRecv = (int) (now - lastHeard);
int idleSend = (int) (now - lastSend);
int to = readTimeout - idleRecv; //答案就在这行,readTimeout,上面提到120s
if (zooKeeper.state != States.CONNECTED) {
to = connectTimeout - idleRecv;
}
if (to <= 0) {
throw new SessionTimeoutException(
"Client session timed out, have not heard from server in "
+ idleRecv + "ms"
+ " for sessionid 0x"
+ Long.toHexString(sessionId));
}
假如我没有分析错的话,那么就是这个原因了。
此外lease和rpc也会可能超时,这个等下次再简单结合代码具体谈。
分享到:
相关推荐
zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架
zk后台api很全的,对于学习ZK很有用的。
ZK开发手册 ZK开发手册 ZK开发手册 ZK开发手册 ZK开发手册
zk-6.5.0.zip ZK 6.5.0 Sep 12, 2012 * Features ZK-447: The file upload allows users to drag and drop local files (HTML5) ZK-1241: ZK Client Widget support swipe event for tablet/mobile device ZK-...
最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC
ZK 8.0.0端参考 ZK 8.0.0组件开发的必需品 ZK 8.0.0组件引用 ZK 8.0.0配置参考 ZK 8.0.0开发人员的参考 ZK 8.0.0风格定制指南 ZK 8.0.0 ZUML参考 zk-mvvm-book
ZK包括一个基于AJAX事件驱动的引擎(engine),一套丰富的XUL和XHTML,以及一种被称为ZUML(ZK User Interface Markup Language,ZK用户界面标记语言)的标记语言。 有了ZK,您可以利用XUL和XHTML的丰富特性来呈现您的...
Librerias ZK 32 Bits Windows
最新的zk核心jar用到zk的可以下载很实用的东西
ZK 5.0.5 Component Reference ZK 5.0.5 Configuration Reference ZK 5.0.5 Style Guide ZK 5.0.5 ZUML Reference
ZK资料学习zk框架的助手,带你步入zk的殿堂。。。。。
zk studion plugins zk studion plugins
zk的chm版的api英文帮助文档. 本人自己制作的。 zk是台湾的一个纯ajax框架。
ZK Eclipse插件 解压至文件夹,如D:\Program Files\MyEclipse 8.5\zkstudio 在Eclipse安装目录下的dropins目录添加link文件如,zk.link,文件内容如下: path=D:\\Program Files\\MyEclipse 8.5\\zkstudio
zk从版本3.4.9升级到3.5.5详细笔记文档总结
ZK4500、中控指纹仪、SDK开发包带各种语言的demo
SIMPLY RICH ZKTM The Developer's Reference Version 3.0.1 ZK的介绍,功能、组建的使用...
zk项目搭建文档,用于zk项目的mvvm模式的 开发 项目。
zk studion plugins zk studio eclipse plugin
ZK开发手册中文版 ZK开发手册中文版 ZK开发手册中文版 ZK开发手册中文版 ZK开发手册中文版