Мы используем эластичный java rest high client 6.1, но часто и случайным образом остальные клиенты возвращают тайм-аут.
Мы уже настраиваем тайм-аут следующим образом:
client.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback {
override def customizeRequestConfig(requestConfigBuilder: RequestConfig.Builder): RequestConfig.Builder = {
requestConfigBuilder
.setConnectionRequestTimeout(0)
.setConnectTimeout(parameters.getInt(s"$propertyGroup.timeout.connection"))
.setSocketTimeout(parameters.getInt(s"$propertyGroup.timeout.socket"))
}
}).setMaxRetryTimeoutMillis(parameters.getInt(s"$propertyGroup.timeout.socket"))
.setFailureListener(new RestClient.FailureListener {
override def onFailure(host: HttpHost): Unit = {
val a = 0
}
})
И во время нашего теста мы установили порог тайм-аута в 60000 мс, 100000 мс, 180000 мс; и все равно случайно получить исключение тайм-аута.
Эта проблема возникает только тогда, когда мы запускаем задание FLINK, которое выполняется так быстро, как может выполнять множество параллельных запросов, или когда мы запрашиваем эластичный элемент в ForEach с миллиардами итераций.
Есть стратегия, идея, фрагмент кода, конфигурация, передовой опыт и т. Д., Чтобы: Подождать несколько секунд (или миллисекунд) и снова попытаться выполнить неудавшийся запрос?
queries
вы на самом деле имеете в виду поисковые запросы, а не другие операции, такие как массовые? Пока вы выполняете это задание, посмотрите очереди задач для ES и убедитесь, что вы не делаете DoS-атаки на свой кластер. - person ryanlutgen   schedule 17.01.2018