Java 区分网络故障/延迟和远程服务器耗时较长

Java 区分网络故障/延迟和远程服务器耗时较长,java,performance,sockets,http,Java,Performance,Sockets,Http,当我们发出http请求时,我们可以设置连接/读/写超时,目前我遇到以下异常: java.net.SocketTimeoutException:读取超时 如何解决这一问题是因为服务器处理请求需要很长时间,还是因为存在大量网络延迟?谢谢。HTTP请求/响应协议要求服务器在相对较短的时间内做出响应。在这个级别上,服务器花费很长时间和网络延迟之间没有区别。对于在服务器上处理长时间运行的进程,您有两个选项: 使用可以随处理进度更新客户端的不同协议 在服务器上生成一个新进程来执行长时间计算并立即返回HTT

当我们发出http请求时,我们可以设置连接/读/写超时,目前我遇到以下异常:

java.net.SocketTimeoutException:读取超时


如何解决这一问题是因为服务器处理请求需要很长时间,还是因为存在大量网络延迟?谢谢。

HTTP请求/响应协议要求服务器在相对较短的时间内做出响应。在这个级别上,服务器花费很长时间和网络延迟之间没有区别。对于在服务器上处理长时间运行的进程,您有两个选项:

  • 使用可以随处理进度更新客户端的不同协议

  • 在服务器上生成一个新进程来执行长时间计算并立即返回HTTP响应。这个新的服务器进程可以在计算完成时通知HTTP服务器,例如将它们保存在文件中或提交到数据库。然后提供另一个HTTP端点,客户端可以查询该端点以检查流程是否已完成

  • 你有没有在谷歌上搜索“保持麦加主义的活力”?维基百科有一篇文章让你开始。