6

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

这是我的日志的样子:

(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 sun.nio.ch.SelectionKeyImpl@57a220c2
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 服务器企业 2.0 Java 1.6 Ubuntu 11.10 服务器 x64

在我的本地机器上,我有一个 Couchbase 在本地 lan 的本地 vm 中运行,我在使用它时没有问题。

任何人都可以帮助调试这个。我们想将 Couchbase 投入生产,但没有这个我们就无法前进。

预先感谢您提供任何帮助或信息。

4

1 回答 1

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"));
于 2013-09-19T18:32:39.070 回答