我目前正在使用ch.ethz.ssh2.Connection连接到Java中的服务器。有时它会挂在一台服务器上(大约10到15秒)。我想知道是什么原因造成了这种挂起时间以及如何避免这种情况。

连接样本

    conn = new ch.ethz.ssh2.Connection(serverName);
    conn.connect();

    boolean isAuthenticated = conn.authenticateWithPassword(user, pass);
    logger.info("Connecting to " + server);

    if (isAuthenticated == false) {
        logger.info(server + " Please check credentials");
    }

    sess = conn.openSession();

   // I am connecting to over 200 servers and closing them. What would be the best practice to loop thru all these servers in the minimal time.

//some servers quickly connects, while some takes some time.
why does this happen?

最佳答案

主要问题是:是代码问题,网络问题还是服务器问题。

可以调试代码问题-不幸的是,ch.ethz.ssh2.Connection没有任何记录日志的功能来检测内部问题。

可能是您应该切换ssh库(或将其用于有问题的服务器进行某些测试)。根据我的经验,sshj非常有用。

如果是网络问题或服务器问题,则可以通过Wireshark检查发生了什么。如果发送了网络数据包,但响应延迟,则问题不在于所使用的客户端代码。

关于java - 是什么原因导致ch.ethz.ssh2.Connection挂起时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44570924/

10-10 14:34