Таймаут чтения сокета OkHttp

Недавно столкнулся с одной проблемой, используем presto-jdbc которые используют okhttp как клиент, okhttp версия 3.9.0

Стек исключения выглядит следующим образом:

Caused by: java.io.UncheckedIOException: java.net.SocketTimeoutException: timeout
        at com.facebook.presto.jdbc.internal.client.JsonResponse.execute(JsonResponse.java:148)
        at com.facebook.presto.jdbc.internal.client.StatementClient.<init>(StatementClient.java:125)
        at com.facebook.presto.jdbc.QueryExecutor.startQuery(QueryExecutor.java:45)
        at com.facebook.presto.jdbc.PrestoConnection.startQuery(PrestoConnection.java:645)
        at com.facebook.presto.jdbc.PrestoStatement.internalExecute(PrestoStatement.java:235)
        ... 168 common frames omitted
Caused by: java.net.SocketTimeoutException: timeout
        at com.facebook.presto.jdbc.internal.okio.Okio$4.newTimeoutException(Okio.java:230)
        at com.facebook.presto.jdbc.internal.okio.AsyncTimeout.exit(AsyncTimeout.java:285)
        at com.facebook.presto.jdbc.internal.okio.AsyncTimeout$2.read(AsyncTimeout.java:241)
        at com.facebook.presto.jdbc.internal.okio.RealBufferedSource.indexOf(RealBufferedSource.java:345)
        at com.facebook.presto.jdbc.internal.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:217)
        at com.facebook.presto.jdbc.internal.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:211)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http1.Http1Codec.readResponseHeaders(Http1Codec.java:187)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:88)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at com.facebook.presto.jdbc.internal.client.OkHttpUtil.lambda$userAgent$0(OkHttpUtil.java:69)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
        at com.facebook.presto.jdbc.internal.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
        at com.facebook.presto.jdbc.internal.okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
        at com.facebook.presto.jdbc.internal.okhttp3.RealCall.execute(RealCall.java:77)
        at com.facebook.presto.jdbc.internal.client.JsonResponse.execute(JsonResponse.java:130)
        ... 172 common frames omitted
Caused by: java.net.SocketException: Socket closed
        at java.net.SocketInputStream.read(SocketInputStream.java:203)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at com.facebook.presto.jdbc.internal.okio.Okio$2.read(Okio.java:139)
        at com.facebook.presto.jdbc.internal.okio.AsyncTimeout$2.read(AsyncTimeout.java:237)
        ... 195 common frames omitted

Чтобы определить, какой этап неправильный, я добавил EventListener для записи всего жизненного цикла запроса информация приведена ниже:

[2020-06-24 09:08:29.990] INFO 21805 [http-nio-8067-exec-1] [com.facebook.presto.jdbc.PrestoHttpEventListener] : http://192.168.xx.xx:7890/v1/statement requestId=c73d0546-10ed-49cb-8cca-00638b0b8a7a:callStart=0ms; connectionAcquired=0ms; requestHeadersStart=1ms; requestHeadersEnd=1ms; requestBodyStart=1ms; requestBodyEnd=1ms; responseHeadersStart=1ms; connectionReleased=7002ms; callFailed: java.net.SocketTimeoutException: timeout=7002ms;

При поиске по идентификатору запроса его нельзя найти на сервере.

Есть идеи об этой проблеме?

0 ответов

Другие вопросы по тегам