【问题标题】:VoltDB JDBC Driver always crashes due to OutOfMemory errorVoltDB JDBC 驱动程序总是由于 OutOfMemory 错误而崩溃
【发布时间】:2013-11-25 07:31:53
【问题描述】:

我试图通过 JDBC API 连接到 voltdb,但总是得到 OutOfMemoryError。我知道,我可以通过增加堆大小来摆脱它,但我想知道,为什么它需要大堆大小?我已经将 1028M 设置为堆大小。

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)

部署.xml

<?xml version="1.0"?>
<deployment>
    <cluster hostcount="1" sitesperhost="2" kfactor="0" />
    <httpd enabled="true" port="65534">
        <jsonapi enabled="true" />
    </httpd>
</deployment>

【问题讨论】:

  • 嗨,我在 VoltDB 工作。我们不知道使用 JDBC 驱动程序的堆空间有任何问题,因此我们希望您能提供一些额外的背景知识来诊断您遇到的问题。 1)调用代码使用了多少堆? 2)您连接到多少个节点(服务器)? 3) 你使用了多少个 JDBC 驱动实例?
  • 4) 你连接到哪个端口?我们有一个理论,这可能是连接到 http 端口的结果。
  • 谢谢 Ben,我根据您的文档编写了简单的客户端。我使用的是 8083 端口,配置为 voltdb 端口。我只连接到一台服务器。是那个问题吗?我会尽快给你其他细节。
  • 我改为端口 65534,但它仍然给了我 OutOfMemoryError。我只是想运行选民示例,请参阅主帖子编辑中的 deployment.xml。
  • 嗨瑞克,感谢您的跟进。我的同事 Izzy 在下面做出了回应。我认为他是对的。数据库连接的默认端口号是 21212,您在 deployment.xml 文件中指定的端口是用于 HTTP/JSON 接口的。

标签: voltdb


【解决方案1】:

您似乎正在尝试连接到服务器上的错误端口。 HTTP 端口用于 JSON 过程执行和一些监控和管理。您应该将客户端连接到 VoltDB 客户端端口,默认为端口 21212。​​

VoltDB 使用的端口以及如何覆盖它们都记录在管理指南中,Appendix A.5.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2014-10-24
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多