gpt4 book ai didi

java - 处理由于无响应的远程主机引起的 DoS

转载 作者:行者123 更新时间:2023-12-04 06:59:42 27 4
gpt4 key购买 nike

在服务器启动过程中,我访问远程主机以获取一些初始化数据。不幸的是,所讨论的远程主机因随机对连接无响应而臭名昭著(假设发生这种情况的概率为 3%)。结果是连接无限期挂起(可能永远挂起),并且我的服务器没有在合理的时间内启动,如果有的话。之前挂了一个小时。

连接超时:

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(connectionTimeout);

for (int i = 0; i <= connectionRetries; i++) {
try {
log.info("Establishing connection to ClassNotes service.");
conn.connect();
break;
} catch (SocketTimeoutException e) {
log.warn("Timed out connecting to ClassNotes service.");
}
}

不起作用,因为在挂起时已经与服务器建立了连接。问题似乎出在它试图从服务器获取 InputStream 时。

对于任何不得不使用不服从服务的人,我是否应该将获取 InputStream 的过程与有限次数的重试进行线程化,并无限期地处理一两个潜在的线程卡在 JVM 的内存中?或者,在 Java 中是否有更常见的方法来处理这个问题?

知道服务器在没有来自远程主机的信息的情况下启动并不像服务器根本没有启动那样具有破坏性,这也很有用。

提前致谢。

最佳答案

您可以 setReadTimeout()除了连接超时。

关于java - 处理由于无响应的远程主机引起的 DoS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com