2014-01-19 50 views
0

我在EC2上建立了5個節點的Cassandra羣集,全部在同一個區域。Cassandra本機傳輸端口9042在EC2機器上運行緩慢

如果我通過cqlsh(9160)進行連接,查詢在一秒鐘內響應。

當我通過開發人員中心或使用本機Java驅動程序進行連接時,兩者都使用端口9042,查詢需要20秒才能響應。

他們始終在同一個第二個區域作出反應。永遠不要再緩慢。

我已經在EC2上設置了幾個Cassandra Clusters,並且已經看到過這個,但不知道如何解決這個問題。最後一次,我放棄了集羣並建立了一個新集羣,並且在9042端口上的響應時間很好。

任何幫助如何調試或解決這個問題,將不勝感激,謝謝。

回答

2

當前版本的DevCenter被設計爲支持作爲主要場景運行(較長的)CQL腳本(與一個接一個地執行查詢的交互式控制檯)。 DevCenter用作底層連接器DataStax Java driver for Cassandra

對於上述場景,爲了確保沒有「衝突」,爲每次執行創建一個新的Session。當初始化Session時,驅動程序執行自動節點發現,創建連接池等。基本上,它做了大量準備工作。根據客戶機到EC2節點的延遲,羣集的大小以及這些節點的配置(請參閱connection requirements),此初始化階段可能非常昂貴。

正如你可以想象的那樣,花在準備上的時間並不代表運行DDL腳本和體面大小的插入/更新的很大比例。但對於交互式場景,它會導致次優行爲(您正在描述的行爲)

DevCenter的下一個版本將解決交互式場景並對其進行優化,因此用戶體驗將成爲您「 d期望。支持這種情況在我們的優先事項清單中非常高。

1

底層Java驅動程序在最初連接時獲取整個羣集拓撲。這使其能夠自動連接到羣集中的任何節點。在EC2上它只能獲得專用地址,嘗試每個地址,然後超時。然後它通過初始連接發送請求

相關問題