2013-03-13 24 views
5

我遇到了一个连接问题,这在Amazon环境(AWS)中的私有虚拟vpc中是一件奇怪的事情。我的上下文是这样的,我在这个子网中有子网我有2台机器客户端机器,我用Couchbase java SDK和一台Couchbase服务器。两者都是大型实例。 当前Java版本1.6。 我已在安全组上打开Couchbase的所有必需端口(8091,8092,11210)。我正在使用curl命令测试连接,以测试与存储桶的连通性,并且这里没有问题。 奇怪的行为是当我试图访问与Java客户端视图,因为我收到超时错误,虽然Java客户端验证成功。AWS VPC中的Couchbase连接不良(TIMING OUT)

这是我的日志样子:

(CacheManager.java:102) -B06C9F5CFF85- Cache client checked out [stdout] 
INFO com.couchbase.client.CouchbaseConnection: Added {QA sa=/10.0.X.XXX:11210, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue 
INFO com.couchbase.client.CouchbaseConnection: Connection state changed for [email protected] 
INFO net.spy.memcached.auth.AuthThread: Authenticated to 10.0.X.XXX/10.0.X.XXX:11210 
Added 10.0.X.XXX to connect queue 
INFO com.couchbase.client.CouchbaseClient: viewmode property isn't defined. Setting viewmode to production mode 
INFO com.couchbase.client.http.AsyncConnectionManager: Opening new Couchbase HTTP connection 
INFO com.couchbase.client.http.AsyncConnectionManager$ConnRequestCallback: /10.0.X.XXX:8092 - Session request successful 
ERROR com.couchbase.client.ViewNode$EventLogger: Connection timed out: [10.0.X.XXX/10.0.X.XXX:8092] 
and then after a while 
INFO com.couchbase.client.ViewConnection: Node 10.0.X.XXX has no ops in the queue 
INFO com.couchbase.client.ViewNode: I/O reactor terminated for 10.0.X.XXX 
SHUTTING DOWN (informed client)) INFO com.couchbase.client.CouchbaseConnection: Shut down Couchbase client 

所以突然连接超时,没有任何理由,然后在客户端被关闭本身。

其他方面的数据: Couchbase Server企业2.0 的Java 1.6 的Ubuntu 11.10服务器64

在我的本地机器我有一个Couchbase在本地局域网本地虚拟机上运行,​​我必须在使用它没有问题。

任何人都可以帮助调试这个。我们希望将Couchbase用于生产,但没有这个我们不能前进。

非常感谢您提供任何帮助或信息。

+0

我也使用亚马逊,但ec2实例。有时他们失去了彼此之间的联系。尝试在cron中运行一些像ping一样的脚本(或使用像munin等监视工具)来确定导致连接关闭的原因。可能是亚马逊问题。 – m03geek 2013-03-21 17:17:01

回答

3

每couchbase客户端文档 -

默认超时用于在Couchbase簇任何给定节点是2.5 秒。如果此时Couchbase SDK未收到来自 服务器的响应,它将断开与Couchbase服务器 的连接并尝试连接到另一个节点。

如果连接不好或不可靠,您可能需要更改“OpTimeout”值。

CouchbaseConnectionFactoryBuilder b = new CouchbaseConnectionFactoryBuilder(); 
      b.setOpTimeout(5000); 
      client = new CouchbaseClient(b.buildCouchbaseConnection(nodes, "bucket-name", "pass")); 
+1

这正是我正在寻找的,谢谢! 只有一句话:CouchbaseClient没有这个构造函数(不再?) 所以它必须这样做: CouchbaseConnectionFactory ccf = b.buildCouchbaseConnection(nodes,“bucket-name”,“pass”); CouchbaseClient客户端=新CouchbaseClient(ccf); – ylka 2013-12-17 13:34:44