尽管我执行了以下操作,但我还是收到连接异常(在最后给出):
创建 Jedis 实例时,我将超时字段设置为 1 小时 (60*60*1000)。我也用0试过了,还是不行。
当我在 7 分钟后检查日志时,我注意到了这一点,尽管我认为异常会更早发生(在 300 秒时)。为什么我总是得到它?知道为什么吗?
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: It seems like server has closed the connection.
at redis.clients.util.RedisInputStream.readLine(RedisInputStream.java:90)
at redis.clients.jedis.Protocol.processMultiBulkReply(Protocol.java:111)
at redis.clients.jedis.Protocol.process(Protocol.java:64)
at redis.clients.jedis.Protocol.read(Protocol.java:127)
at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:199)
at redis.clients.jedis.BinaryJedis.smembers(BinaryJedis.java:1187)
Run Code Online (Sandbox Code Playgroud)
我会建议:
检查 Redis 服务器配置文件中是否未设置不活动超时。将其设置为零。https://github.com/antirez/redis/blob/unstable/redis.conf#L44
检查应用程序执行的 smembers 命令是否不会返回数百万个项目。超过某个阈值后,较大的通信缓冲区可能会导致连接关闭。
当然,这也可能是由于网络基础设施本身造成的,尤其是当您在公共云的不同虚拟机上运行 Redis 客户端和服务器时。
| 归档时间: |
|
| 查看次数: |
20526 次 |
| 最近记录: |