Я использую ElastiCache Redis с приложением Spring Boot, работающим асинхронно.размер асинхронного пула равен 3 с максимальным значением 6.
В большинстве случаев исключений нет, однако примерно раз в день я вижу следующее исключение:
org.springframework.data.redis.RedisConnectionFailureException: java.net.SocketTimeoutException: Read timed out; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method) ~[na:1.8.0_131]
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[na:1.8.0_131]
at java.net.SocketInputStream.read(SocketInputStream.java:171) ~[na:1.8.0_131]
at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_131]
at java.net.SocketInputStream.read(SocketInputStream.java:127) ~[na:1.8.0_131]
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_131]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_131]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_131]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_131]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_131]
at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_131]
У меня естьувеличил тайм-аут Jedis с 2000 до 10000, и он, похоже, ничего не изменил.
Размер пула Jedis по умолчанию равен 8, и у меня никогда не должно быть больше 6 на поток, поэтому я не подозреваю, что это будетпроблема также.
Redis не закрывает незанятые соединения по умолчанию, я установил значение тайм-аута Redis на 20, но это создало новые проблемы.Я начал видеть, JedisConnectionException: неожиданный конец потока.регулярно, поэтому я устанавливаю тайм-аут Redis на 0.
У меня создается впечатление, что другие видели эту проблему, основываясь на моих исследованиях, но я пока не нашел окончательного решения этой проблемы.
Заранее спасибо.