当前位置: 首页 > 知识库问答 >
问题:

realCall.cancel似乎它'可能'关闭我的连接

丁成弘
2023-03-14

出于某种原因,在每秒27个请求的情况下,我们开始发现okhttp有时会出现问题,我们注意到每个主机的请求限制为5个。我们正在讨论的api有时会出现问题/超时等。

我注意到我们没有在超时时取消请求,它们似乎仍在飞行中。(即。我想开始使用RealCall.cancel)

在调查这件事的过程中。取消呼叫引擎。取消()如果引擎不为null,则调用streamAllocation。cancel()调用以下代码。。。

public void cancel() {
   HttpStream streamToCancel;
   RealConnection connectionToCancel;
   synchronized (connectionPool) {
     canceled = true;
     streamToCancel = stream;
     connectionToCancel = connection;
   }
   if (streamToCancel != null) {
      streamToCancel.cancel();
   } else if (connectionToCancel != null) {
      connectionToCancel.cancel();
   }
}

这看起来非常可怕,因为我只是想取消一个请求而不是整个连接。即。也许只是流http2流,但我绝对希望连接活着(我想)。

谢谢,迪恩

共有1个答案

拓拔玺
2023-03-14

如果在出现流之前取消,例如在TLS握手期间,取消将取消整个连接。一旦你有了一个流,取消只会取消该流。

 类似资料:
  • 这里的代码给出了。如果我在try块中关闭f,它可以工作,但是如果我将放在finally块中,它就不工作了。它显示错误。那有什么问题? 因此,程序应该从用户那里获取输入并将其保存在.doc文件中,然后从同一文件中读取数据并打印出来。如果还不是很明显的话,我正在学习Java。 因此,代码可以工作,但我注意到有一个警告,没有关闭。我将语句放在块中。它在那里显示了一个错误。 close语句在块中但无法识别

  • 当我认为我已经做了所有正确的事情时,Mockito似乎抛出了一个。这是我的部分测试案例: 下面是分部类和方法: 忽略了一个事实,即您永远不应该模拟您不拥有的接口,为什么Mockito会给我以下消息?

  • 问题内容: 我的Maven 3.0.3版本在Jenkins中设置了和。但是,当我进行部署时,我总是 部署的工件很大。如何正确部署它? 问题答案: 此问题是由此bug引起的。如链接中所建议,只需使用webdav进行部署。 考虑执行以下操作: 我以前有过这个问题。我相信只有在大小大于等于256 MB的工件时才会发生这种情况。 切换到webdav部署方法后,您还可以减少内存设置。(如果您只是由于部署过程

  • 刚刚在centos 6上安装了mongodb。尝试用命令“mongo”连接mongo sh却得到这个错误消息:2015-09-26T07:07:35.309 0000 W网络在5000毫秒后连接127.0.0.1:27017失败,放弃。2015-09-26T07:07:35.316 0000 E查询错误:无法连接到服务器127.0.0.1:27017 (127.0.0.1),连接尝试在连接时失败(

  • 我试图在PHP中关闭magic quotes,但无法将其禁用-我已在/usr/local/lib/PHP.ini中设置了以下内容,并重新启动了Apache,但没有任何区别。 phpinfo确认这些都设置为Off。 然后我试着添加 但这给了一个500内部服务器错误-在error_log没有添加任何东西来告诉我为什么会发生这种情况。 服务器使用CPanel/WHM运行Centos 5.8 64位,前端

  • 我们试图在Apache Beam管道上使用固定窗口(使用)。我们的流程如下: 从pub/sub中提取数据 反序列化JSON到Java对象 窗口事件w/固定窗口5秒 使用自定义的,将事件的每个窗口合并成一个