Java createConnection的VoltDB超时
下面是一个简单的代码片段,演示如何连接到VoltDB服务器Java createConnection的VoltDB超时,java,networking,connection,timeout,voltdb,Java,Networking,Connection,Timeout,Voltdb,下面是一个简单的代码片段,演示如何连接到VoltDB服务器 ClientConfig clientConfig = new ClientConfig(); Client client = ClientFactory.createClient(clientConfig); String server = "192.168.43.32"; client.createConnection(server); 根据我的实验,如果服务器停机或无法从网络层连接,则需要大约75秒才能得到响应 SEVERE:
ClientConfig clientConfig = new ClientConfig();
Client client = ClientFactory.createClient(clientConfig);
String server = "192.168.43.32";
client.createConnection(server);
根据我的实验,如果服务器停机或无法从网络层连接,则需要大约75秒才能得到响应
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毫秒内建立,肯定已经出了问题
我已经尝试了下面的设置
clientConfig.setConnectionResponseTimeout(1000);
在这种情况下,它没有任何效果。因此,我猜这不是为了这个目的。通常,当数据库关闭且您的客户端尝试连接时,会出现立即连接被拒绝异常,例如:
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)
线程“main”java.net.ConnectException中的异常:连接被拒绝
位于sun.nio.ch.Net.connect0(本机方法)
位于sun.nio.ch.Net.connect(Net.java:364)
位于sun.nio.ch.Net.connect(Net.java:356)
位于sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:623)
位于java.nio.channels.SocketChannel.open(SocketChannel.java:184)
位于org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:165)
位于org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:153)
位于org.voltdb.client.ConnectionUtil.getAuthenticatedConnection(ConnectionUtil.java:145)
位于org.voltdb.client.Distributer.createConnectionWithHashedCredentials(Distributer.java:890)
位于org.voltdb.client.ClientImpl.createConnectionWithHashedCredentials(ClientImpl.java:191)
位于org.voltdb.client.ClientImpl.createConnection(ClientImpl.java:684)
在benchmark.benchmark.(benchmark.java:17)
位于benchmark.benchmark.main(benchmark.java:78)
通常,如果存在防火墙阻止客户端接收任何类型的响应,或者存在其他原因,则可能会发生“java.net.ConnectException:Connection timed out”。首先要检查的可能是您是否有任何防火墙或网络设置阻止访问端口21212(默认的VoltDB数据库连接端口)
ClientConfig设置用于在给定的毫秒数内未收到来自过程调用或ping的响应时关闭实时连接,但不用于创建新连接。感谢您的解释。