【发布时间】:2012-09-06 13:30:11
【问题描述】:
我试图调用一个非常繁重的进程。 它的平均工作时间估计为 9-10 分钟。
当我执行这个过程时,我将超时设置为一个非常大的数字:99999999。
2分钟后,我收到以下错误:
java.net.SocketTimeoutException: 读取超时
我尝试再弄乱它一些,我将超时设置为 3000,并且在预期的 3 秒后,我得到了同样的错误。
您知道为什么socket.setSoTimeout(99999999) 将其设置为最大 120000 吗?
【问题讨论】:
-
此方法传递给操作系统,因此此方法的行为取决于您的操作系统。您使用的是哪个版本的操作系统?
-
您是否尝试过发送 keep-alive 消息或让进程在完成后“呼叫”您而不是让套接字长时间打开?
-
看来操作系统只是拒绝您的值,因为如果它超出范围。我会尝试使用更高的值但不是那么高(您将其设置为超过 27 小时)。例如,3 分钟、5 分钟、10 分钟。
-
如果你不想超时,我会尽量不设置,而不是设置得很高。
-
我将它设置为 3 分钟,但 2 分钟后仍然出现异常
标签: java sockets exception timeout