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

Spring webflux WebClient记录“对等方重置连接”

端木元青
2023-03-14

我有以下代码,它使用WebClient进行HTTP调用。

        webClient.post()
                 .uri("/users/track")
                 .body(BodyInserters.fromObject(getUserTrackPayload(selection, customAttribute, partyId).toString()))
                 .header(CONTENT_TYPE, APPLICATION_JSON)
                 .retrieve()
                 .onStatus(httpStatus -> !CREATED.equals(httpStatus),
                           response -> response.bodyToMono(String.class)
                                               .flatMap(body -> buildErrorMessage(response.statusCode().value(), body, partyId,
                                                                                  customAttribute)
                                                   .flatMap(e -> Mono.error(new MyException(e)))))
                 .bodyToMono(Object.class)
                 .map(o -> (JsonObject)new Gson().toJsonTree(o))
                 .flatMap(body -> body.get("message") != null && body.get("message").getAsString().equalsIgnoreCase("success")
                                  && body.get("attributes_processed") != null && body.get("attributes_processed").getAsInt() == 1
                     ? Mono.just(body)
                     : buildErrorMessage(CREATED.value(), body.toString(), partyId, customAttribute)
                         .flatMap(e -> Mono.error(new MyException(e))));

在一段时间后(比如10分钟)第一次调用此代码时,我得到了以下日志。但是,调用成功,输出正确。

io.netty.channel.unix.Errors$NativeIoException: syscall:read(..) failed: Connection reset by peer at io.netty.channel.unix.FileDescriptor.readAddress(..)(Unknown Source)
2019-03-19 03:11:45,625 WARN  [:::] [reactor-http-epoll-8] reactor.netty.http.client.HttpClientConnect : [id: 0x2e3252c0, L:/172.18.0.125:42956 - R:my-endpoint.com/151.101.53.208:443] The connection observed an error

不确定生成这些日志的原因。当我使用SpringBoot 2.1.0时,它记录错误级别,现在我升级到2.1.3版本(reactor netty版本-0.8.5),它记录警告级别。我应该担心这些日志吗?

共有1个答案

柳晔
2023-03-14

我见过类似的行为,当客户端连接一次后离开(反弹),下一个请求失败,然后重试。

创建WebClient时,请尝试禁用连接池。类似这样:

@Bean
public WebClient webClient() {
    return WebClient.builder()
             .clientConnector(connector())
             .build();
}

private ClientHttpConnector connector() {
    return new ReactorClientHttpConnector(HttpClient.from(TcpClient.newConnection()));
}
 类似资料:
  • 我在RabbitMQ上犯了stainger错误。我发送了一些关于MQ和Php产品的信息,但出现了一些问题。我可以在出现异常“errno=104由对等方重置连接”的一分钟后发送消息。见下文: rabbitmq-3.6的版本。1,php-7.0版本。5,php amqp库的版本-“Videlavaro/php amqplib”:“~2.7 来自rabbitmq的日志:

  • 我正在尝试让一个简单的主机/客户端传输工作。我遵循了一个教程,服务器正常运行,但当客户端尝试连接时,它返回“由对等端重置连接”我真的不知道错误在哪里。

  • 我正在使用Python,并在给定端口上侦听UDP数据包,一切似乎都很好地工作-但经过较长时间后,脚本崩溃,出现以下错误: 当重新启动脚本时,相同的崩溃会在较短的时间后再次发生。相反,重新启动服务器似乎可以再次完全解决问题。 关于插座方面的事情,我正在做: 我是否遗漏了一些显而易见的东西,或者只是有一个简单的方法来避免这种情况? 提前感谢您提供的任何信息! 本吉

  • 问题内容: 我正在开发一个从Web服务器下载数据的应用程序,一开始似乎没有任何问题,但是几天前我开始收到这种异常:javax.net.ssl.SSLException: Read error: ssl=0x7a6588: I/O error during system call, Connection reset by peer我不确定是什么原因引起的问题以及如何解决。这是整个LogCat消息:

  • 我有一个cron,它正在使用fwrite函数,在cron运行1小时后,它将崩溃并出现错误: fwrite():发送29字节失败,对等方重置了errno=104连接 在线: 在这之后,我总是通过 似乎PHP内核和DNS解析器内部有问题,因为在这之后,我在将主机名解析到ip地址时遇到了一些问题。在我的函数中,还使用了和函数。如何预防这些问题?

  • 问题内容: 我设置rabbitmqserver并使用以下步骤添加了用户: 我的celery配置是这样的: 我的代码是这样的: 当我尝试跑步时 我懂了 一切看起来都很完美!有人可以帮我我在这里想念的吗? 问题答案: 一旦我将代码部署到生产环境并将Celery升级到3.1.12,问题就解决了。我最初使用3.0.19,但后来进行了升级,但没有发现任何问题。感谢您的支持。