2013-11-25 36 views
1

我試圖通過JDBC API連接到voltdb,但始終得到OutOfMemoryError。我知道,我可以通過增加堆大小來擺脫它,但是我想知道,爲什麼它需要大堆大小?我已經將1028M設置爲堆大小。由於OutOfMemory錯誤,VoltDB JDBC Driver始終崩潰

Exception in thread "http-bio-8080-exec-206" java.lang.OutOfMemoryError: Java heap space 
     at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:39) 
     at java.nio.ByteBuffer.allocate(ByteBuffer.java:312) 
     at org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:213) 
     at org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:143) 
     at org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:118) 
     at org.voltdb.client.Distributer.createConnectionWithHashedCredentials(Distributer.java:614) 
     at org.voltdb.client.ClientImpl.createConnectionWithHashedCredentials(ClientImpl.java:171) 
     at org.voltdb.client.ClientImpl.createConnection(ClientImpl.java:542) 
     at org.voltdb.jdbc.JDBC4ClientConnection.<init>(JDBC4ClientConnection.java:141) 
     at org.voltdb.jdbc.JDBC4ClientConnectionPool.get(JDBC4ClientConnectionPool.java:83) 
     at org.voltdb.jdbc.Driver.connect(Driver.java:91) 
     at java.sql.DriverManager.getConnection(DriverManager.java:582) 
     at java.sql.DriverManager.getConnection(DriverManager.java:207) 

deployment.xml中

​​
+0

您好,我對VoltDB工作。我們沒有意識到使用JDBC驅動程序時堆空間有任何問題,所以我們希望您有一些額外的背景幫助來診斷您遇到的問題。 1)調用代碼使用多少堆? 2)你連接了多少個節點(服務器)? 3)您使用了多少個JDBC驅動程序實例? – BenjaminBallard

+0

4)你連接了什麼端口?我們有一個理論,這可能是連接到http端口的結果。 – BenjaminBallard

+0

感謝Ben,我根據您的文檔編寫了簡單的客戶端。我正在使用配置爲voltdb端口的8083端口。我只連接到一臺服務器。這是問題嗎?我會盡快給你提供其他細節。 – RickDavis

回答

1

它看起來像你試圖連接到服務器上的錯誤的端口。 HTTP端口用於JSON程序執行和一些監視和管理。您應該將客戶端連接到默認情況下端口21212的VoltDB客戶端端口。

使用VoltDB,以及如何對其進行覆蓋的端口都記錄在管理指南中,Appendix A.5.