2013-03-13 54 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