使用Java检查数据库服务器状态

使用Java检查数据库服务器状态,java,database,sockets,status,Java,Database,Sockets,Status,我想检查使用Java的数据库服务器的联机/脱机状态 我可以通过端口上的套接字连接检查这一点吗?我想通过与jdbc的数据库连接来执行此操作,因为登录名和数据库系统信息未知。您可以尝试以下操作: try { Socket socket = new Socket("127.0.0.1", port); //Port dependent on your DB/Server // Server is up socket.close(); }

我想检查使用Java的数据库服务器的联机/脱机状态


我可以通过端口上的套接字连接检查这一点吗?我想通过与jdbc的数据库连接来执行此操作,因为登录名和数据库系统信息未知。

您可以尝试以下操作:

    try {
        Socket socket = new Socket("127.0.0.1", port);  //Port dependent on your DB/Server
        // Server is up
        socket.close();
    }
    catch (IOException e)
    {
        // Server is down
    }

是的,只要打开数据库服务器地址和端口的
Socket
,如果得到
IOException
服务器已关闭。(用postgress测试)


上述方法在远程无法到达的情况下没有真正考虑超时,并且应该定义一个合理的超时,因为默认值是20秒!!p> 创建空套接字后,可以使用该方法声明超时

SocketFactory sf = SocketFactory.getDefault();

try (Socket socket = sf.createSocket()) {
    socket.connect(new InetSocketAddress(ipAdder, port), timeoutInMillis);
    logger.info("database is up");
} catch (IOException e) {
    logger.info("database is down");
}

上面的例子使用

telnet连接到服务器。不确定这个问题怎么会太广泛而无法在这里讨论。@LuiggiMendoza的人最近似乎在讨论这个问题。
SocketFactory sf = SocketFactory.getDefault();

try (Socket socket = sf.createSocket()) {
    socket.connect(new InetSocketAddress(ipAdder, port), timeoutInMillis);
    logger.info("database is up");
} catch (IOException e) {
    logger.info("database is down");
}