我们有一个spring Boot 应用程序,它使用Elasticsearch Client连接到ELK,并通过传递时间窗口(从DateTime和To DateTime)来检索数据。如果窗口超过16小时,我们将面临以下生产错误。* 无法完成请求:java.net.SocketTimeoutException:http-outgoing-18 [ACTIVE] * 我们尝试通过设置如下客户端配置来增加套接字超时。
return ClientConfiguration.builder()
.connectedTo(uris)
.usingSsl(sslContext)
.withBasicAuth(username, password)
.withConnectTimeout(Duration.ofMillis(5000))
.withSocketTimeout(Duration.ofMillis(20000))
.withDefaultHeaders(compatibilityHeaders)
.build();
对于较低的环境测试,我们试图在较低的环境中复制该场景。我们将超时值设置为小于响应时间。通常我们的API响应需要大约300到400毫秒。我们将套接字超时设置为100 ms('. withSocketException(Duration.ofMillis(20000)'),这样我们就可以在较低的env中复制异常并对其进行测试。套接字超时可以在以后使用同一段代码增加。但是上面的代码并不起作用,即使将socketError的值设置为100之后,响应也会在300到400毫秒之间收到。但是我们期待socketworldException,因为我们已经将值设置为100。我们的测试方法是否正确?请帮助建议如何设置套接字超时的ElasticSearch客户端和解决这个问题。
谢谢你,谢谢
1条答案
按热度按时间zf9nrax11#
如果套接字超时被正确配置为100 ms,它不会在300到400 ms时给出响应,而是给出
SocketTimeoutException
。对于配置100 ms的套接字超时,
socketTimeout
持续时间将为: