使用Elasticache在日志中的DNS错误



我已经遇到了一个奇怪的错误,因为一个星期,这是堆栈跟踪

 ERROR (redisson-netty-1-4) [DNSMonitor(operationComplete:98)] Unable to resolve redis.***********.cache.amazonaws.com java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at io.netty.resolver.dns.DnsNameResolver.doResolveCached(DnsNameResolver.java:613)
at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:593)
at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:527)
at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:63)

该应用程序是使用Redisson Client连接Elasticache的Springboot API。尽管我看到这些错误,但API运行良好,没有任何错误。也无法在网上获得任何有关此的线索。这里有人面临类似的事情吗?

i也在日志中此错误,然后是上述错误

org.redisson.client.RedisTimeoutException: Redis server response timeout (3000 ms) occured for command: (HGET) with params: [packagesCache, PooledUnsafeDirectByteBuf(ridx: 0, widx: 3, cap: 256)] channel: [id: 0xdfd44ac3, L:/10.0.2.206:42857 - R:redis.kl3ise.0001.use1.cache.amazonaws.com/10.0.1.234:6379]
    at org.redisson.command.CommandAsyncService$11.run(CommandAsyncService.java:682)
    at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:663)
    at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:738)
    at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:466)
    at java.lang.Thread.run(Thread.java:748)

添加其他日志

Request for schedule for student with access key ab947-cf32-4965-ab06-36d4e904899don date 2018-02-14org.redisson.client.RedisTimeoutException: Redis server response timeout (60000 ms) occured for command: (HEXISTS) with params: [analyzedStudyPlanCache, PooledUnsafeDirectByteBuf(ridx: 0, widx: 9, cap: 256)] channel: [id: 0xe4dc90da, L:/10.0.2.206:56685 – R:redis.kl3ise.0001.use1.cache.amazonaws.com/10.0.1.234:6379]

日志已经给出提示Unable to resolve redis.***********.cache.amazonaws.com

首先尝试检查您的实例是否可以解决(查找Redis服务器的位置(,您可以简单地执行此操作:

$ host redis.****.cache.amazonaws.com

或一个简单的ping redis.****.cache.amazonaws.com您可能没有得到PING响应,但至少应该解决域(恢复一些IP地址(

如果您没有收回任何东西,可能会发生Elasticache实例刚刚创建并且没有喷气繁殖,所以这就是为什么您可以在日志中获取条目,如果实例已经启动并运行了然后,正确设置了DNS解析器。作为一个额外的测试,您可以尝试

$ dig @8.8.8.8 redis.***cache.amazonaws.com +short

这将使用Google公共DNS,如果您确实从该查询中获得答案,则问题在您定义的名称服务器中,只需检查/etc/resolv.conf

如果您可以解析域,则可以下一步尝试检查Elasticache/Redis实例是否启动并运行,并且可以从您的实例中达到它,因为您可以通过终端执行此操作:

redis-cli -h redis.***.cache.amazonaws.com

如果不使用默认端口6379,则可以使用

redis-cli -h redis.***.cache.amazonaws.com -p XXXX 

在其中xxxx是配置的端口。

如果您没有redis-cli命令,则可以尝试进行telnet,例如:

telnet redis.***.cache.amazonaws.com 6379

如果您确定实例正在启动并运行,可以解决名称但仍然无法连接,请从AWS侧检查安全组,可能会被阻止。

最新更新