首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VoltDB createConnection超时

VoltDB createConnection超时
EN

Stack Overflow用户
提问于 2015-05-29 02:47:02
回答 1查看 402关注 0票数 1

下面是一个简单的代码片段,演示如何连接到VoltDB服务器。

代码语言:javascript
复制
ClientConfig clientConfig = new ClientConfig();
Client client = ClientFactory.createClient(clientConfig);
String server = "192.168.43.32";
client.createConnection(server);

根据我的实验,如果服务器处于故障状态,或者只是无法从网络层连接,则需要大约75秒钟的时间才能得到响应。

代码语言:javascript
复制
SEVERE: Failed to connect to 192.168.43.32, in 75,359 ms
java.net.ConnectException: Operation timed out
    at sun.nio.ch.Net.connect0(Native Method)
    at sun.nio.ch.Net.connect(Net.java:458)
    at sun.nio.ch.Net.connect(Net.java:450)
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:648)
    at java.nio.channels.SocketChannel.open(SocketChannel.java:189)
    at org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:154)
    at org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:142)
    at org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:134)
    at org.voltdb.client.Distributer.createConnectionWithHashedCredentials(Distributer.java:878)
    at org.voltdb.client.ClientImpl.createConnectionWithHashedCredentials(ClientImpl.java:189)
    at org.voltdb.client.ClientImpl.createConnection(ClientImpl.java:682)
    at src.java.tutorial.voltdb.integration.ConnectionTest.main(ConnectionTest.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

有没有任何方法来设置超时时间,所以应用程序不需要等待这么长的时间。一个成功的连接通常只需要几十毫秒,所以我认为如果不能在1000毫秒内建立连接,那么肯定已经有问题了。

我已经尝试了下面的设置

代码语言:javascript
复制
clientConfig.setConnectionResponseTimeout(1000);

在这种情况下,它根本没有任何影响。所以我想这不是为了这个目的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-29 14:31:11

通常,当数据库关闭且客户端试图连接时,它将得到立即拒绝的连接异常,例如:

代码语言:javascript
复制
Exception in thread "main" java.net.ConnectException: Connection refused
at sun.nio.ch.Net.connect0(Native Method)
at sun.nio.ch.Net.connect(Net.java:364)
at sun.nio.ch.Net.connect(Net.java:356)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:623)
at java.nio.channels.SocketChannel.open(SocketChannel.java:184)
at org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:165)
at org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:153)
at org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:145)
at org.voltdb.client.Distributer.createConnectionWithHashedCredentials(Distributer.java:890)
at org.voltdb.client.ClientImpl.createConnectionWithHashedCredentials(ClientImpl.java:191)
at org.voltdb.client.ClientImpl.createConnection(ClientImpl.java:684)
at benchmark.Benchmark.<init>(Benchmark.java:17)
at benchmark.Benchmark.main(Benchmark.java:78)

通常,如果有防火墙阻止客户端接收任何类型的响应,或者可能有其他原因,则可能会出现"java.net.ConnectException: Connection“。首先要检查的可能是,是否有任何防火墙或网络设置可以阻止对端口21212 (默认的VoltDB数据库连接端口)的访问。

ClientConfig setConnectionResponseTimeout()设置用于在给定的毫秒数内未收到来自过程调用或ping的响应时关闭活动连接,但不用于创建新连接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30520286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档