`
annan211
  • 浏览: 460826 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

记一次 redis 调错经验 java.util.NoSuchElementException: Unable to validate object

 
阅读更多
[size=large]
运行正常的redis集群,在今早爆出 连串错误。
先是 拒绝连接:
排查过程:
范围猜测
1 怀疑服务器断电重启导致端口被防火墙校验
2 端口被其他进程占用
3 内存不足
4 IP段切换造成

过程:
关闭防火墙 检查redis读写是否能够正常访问  正常
netstat 检查端口占用 无占用
查看内存  因为使用的redis是3.2.9 版本,鉴于redis copy-on-write特性,内存应该占用不大
IP 分段测试,多台服务器检测。

一轮排查下来 范围大致圈定在redis服务器本身。

续查:给指定的问题redis 指定日志 具体配置redis.conf
 loglevel notice
logfile /opt/server/redis-3.2.9/redis.log 


注意要把不相干的日志配置注释 以免干扰,发现无异常。怀疑是redis.conf bind参数问题,因为后期有新机器接入 IP段混乱。 为避免干扰 直接注释掉此参数。
 
  现在允许访问。

  但是后续问题继续出现,允许访问一段时间(几分钟)之后,停止对外服务,报错为     java.util.NoSuchElementException: Unable to validate object 
 
随即排除用户名密码问题和redis服务本身问题。
继续观察日志 发现在停止访问的过程中  不断有进程尝试对内存数据进行持久化。日志提示open file有限制
怀疑:
1 连接超时
2 文件句柄太小
3 文件写入异常

过程:
  增加 timeout 时间,进行调试,
  增加ulimit -n 限制 进行测试 此时报错改为 RDB文件写入有问题。
  随即修改rdb持久化文件配置
 
dir /tmp/redis_data  
#./->/tmp/redis_data
dbfilename temp.rdb
#
  

操作指令:

  sudo mkdir /tmp/redis_data
  sudo touch temp.rdb
 

进行测试  发现日志提示  不允许自己创建temp.rdb文件,随即删除该文件
测试 ,报错修改为 写入文件权限不足,随即修改文件路径权限。
测试 正常,一段时间后 仍然正常写入。
问题解决。


  
[/size]
分享到:
评论

相关推荐

    redis-4.0.6.tar.gz linux安装包

    对于Systemd系统,可以在/etc/systemd/system创建一个名为`redis.service`的文件,并添加相应配置。然后执行: ``` sudo systemctl enable redis sudo systemctl start redis ``` 以上就是安装Redis 4.0.6的...

    netty-codec-redis-4.1.74.Final-API文档-中文版.zip

    标签:netty、codec、redis、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    redis-3.0.7.tar.gz

    下载redis(http://redis.io/) 2.上传到linux 3.在 usr/local下新建文件夹 redis mkdir /usr/local/redis 4.将root下的redis移动到 /usr/local/redis 然后解压 mv redis-3.0.7.tar.gz /usr/local/redis/ cd /...

    redis-3.2.12.tar.gz和redis-3.3.3.gem.zip

    Redis是一款高性能的键值对数据库,常用于缓存、消息队列等场景。在这个压缩包中,包含了两个不同版本的Redis软件:redis-3.2.12.tar.gz和redis-3.3.3.gem。 `redis-3.2.12.tar.gz`是Redis的源代码包,版本为3.2.12...

    netty-codec-redis-4.1.73.Final-API文档-中文版.zip

    标签:codec、redis、netty、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    redis-5.0.8.tar.gz

    5. 将Redis配置为系统服务,复制`util/install_server.sh`中的启动脚本到`/etc/init.d/redis`,并根据需要编辑配置文件`redis.conf`。 Redis支持多种数据类型,如字符串、哈希、列表、集合和有序集合,这使得它在...

    jedis-3.3.0.jar

    java.lang.NoSuchMethodError: redis.clients.jedis.ScanResult.getStringCursor()Ljava/lang/String; at org.crazycake.shiro.WorkAloneRedisManager.keys(WorkAloneRedisManager.java:149) at org.crazycake....

    redis-5.0.4.tar.gz下载及redis安装过程

    /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf 连接: 用redis-cli cd /usr/local/redis/bin/ ./redis-cli #进入 exit /quit #退出 关闭redis pkill redis-server #关闭 ./redis-cli shutdown ...

    linux redis安装(redis-2.6.14.tar.gz)

    对于Systemd系统,可以创建一个名为`redis.service`的文件放在`/etc/systemd/system/`目录下,然后使用`systemctl`管理Redis服务。 以上就是在Linux环境下安装Redis 2.6.14的详细步骤以及一些基本的Redis命令。尽管...

    redis-6.2.13.tar.gz

    Redis支持简单事务,可以一次性执行多个命令,保证原子性。 4. **发布订阅(Publish/Subscribe)**: Redis提供发布订阅模式,用于实现消息传递,允许客户端订阅特定频道并接收消息。 5. **主从复制(Slave ...

    redis-4.0.0.tar.gz

    6. 启动:执行`src/redis-server /path/to/redis.conf`启动Redis服务器。 五、使用Redis 4.0.0 1. 客户端连接:可以使用内置的`redis-cli`客户端,或第三方工具如`Jedis`(Java)、`StackExchange.Redis`(C#)等。...

    redis-64.3.0.503.zip

    4. **事务**:Redis支持简单的事务操作,可以一次性执行多个命令。 5. **发布/订阅**:Redis提供发布订阅模式,允许应用程序进行消息通信。 6. **Lua脚本**:Redis支持在服务器端执行Lua脚本,实现复杂的逻辑。 7. *...

    redis-3.2.9.tar.gz+redis-3.2.1.gem.rar

    - 启动Redis服务器:`src/redis-server /path/to/redis.conf` - 停止Redis服务器:`src/redis-cli shutdown` 4. **客户端交互**: - 使用`redis-cli`进行命令行操作,例如连接服务器(`redis-cli -h localhost -p...

    redis-windows-7.2.3.zip

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。它以其高效的数据处理能力,丰富的数据结构以及简单易用的API赢得了广大开发者青睐。...

    redis-7.0.11-windows.zip

    1. **install_redis.cmd**:这是一个批处理脚本,用于帮助用户快速安装 Redis 服务。它通常会处理配置文件的设置,注册 Redis 为 Windows 服务,并确保 Redis 服务器可以在启动时自动运行。 2. **redis.conf**:这...

    redis-64.3.0.503.rar

    <groupId>redis.clients <artifactId>jedis 版本号 ``` 2. 创建Jedis实例,连接到Redis服务器: ```java Jedis jedis = new Jedis("localhost", 6379); jedis.auth("password"); // 如果有密码 ``` 3. 执行Redis...

    netty-codec-redis-4.1.73.Final-API文档-中英对照版.zip

    标签:codec、redis、netty、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    Redis (redis-6.2.10.tar.gz)

    Redis (redis-6.2.10.tar.gz)是一个高性能的key-value数据库,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,...

    redis-64.3.0.503 64位redis安装文件,直接运行批处理安装

    3. **事务支持**:Redis支持事务,可以一次性执行多个操作,确保数据的一致性。 4. **发布/订阅**:通过发布和订阅模式,Redis可以实现消息的传递,常用于构建实时消息系统。 5. **持久化**:提供了RDB(快照)和AOF...

    spring-data-redis-2.0.9.RELEASE-API文档-中英对照版.zip

    标签:springframework、data、spring、redis、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和...

Global site tag (gtag.js) - Google Analytics