Redis突现拒绝连接问题处理方案

 更新时间:2024年02月23日 14:34:52   作者:左边的天堂  
这篇文章主要介绍了Redis突现拒绝连接问题处理方案,分析原因是由于redis与业务共一个服务器,内存只有8G,业务服务启动过多,内存不足导致redis拒绝连接,需要的朋友可以参考下

一、问题回顾

项目突然报异常

[INFO] 2024-02-20 10:09:43.116 i.l.core.protocol.ConnectionWatchdog    [171]: Reconnecting, last destination was 192.168.0.231:6379
[WARN] 2024-02-20 10:09:43.120 i.l.core.protocol.ConnectionWatchdog    [151]: Cannot reconnect to [192.168.0.231:6379]: finishConnect(..) failed: Connection refused: /192.168.0.231:6379

看异常显示redis无法连接,使用redis-cli 命令也无法正常进入,显示拒绝连接,但进程没有挂掉。
分析原因是由于redis与业务共一个服务器,内存只有8G,业务服务启动过多,内存不足导致redis拒绝连接。
没办法只能先启动,命令如下:

/usr/local/bin/redis-server /usr/local/redis/redis.conf

启动后发现项目自动连上了,但查看redis数据时,发现历史数据都丢失了。继续查看redis配置

cat /usr/local/redis/redis.conf 

查看是否有设置持久化,没有开启aof,只开启了默认的rdb。

rdb的路径配置是当前目录。

而前面启动的路径并不是在/usr/local/redis/,导致数据为空,重新切换到该路径启动数据恢复正常。

二、解决方案

上面临时启动治标不治本,跟领导商量了一下,决定找网管把服务器的内存升级一下。升级面临着需要重启服务器,所有依赖redis的服务都会停摆,所以要提前做好准备工作,节省操作时间。
步骤如下:
1、把相关业务添加到系统自启动
2、将Redis也添加到系统自启动
3、停止业务服务,避免新的请求进来
4、手动保存Redis镜像,保证数据不丢失
5、升级配置,重启服务器
6、等待Redis和业务开机启动
7、验证业务服务是否正常

详细操作:

1、把相关业务添加到系统自启动

本例所使用的操作系统是Centos 7,其他系统的命令会有所不同。

cd /etc/rc.d
chmod +x rc.local      #添加rc.local可执行权限
vim rc.local

在文件的最后添加下面代码:

sudo sh /mnt/core/start.sh

以上脚本文件也要添加可执行权限

chmod +x start.sh

2、创建Redis开机自启动服务

打开目录

cd /usr/lib/systemd/system

创建服务

touch redis.service

然后使用以下命令打开文件

vim redis.service

并将文件内容更改为以下代码:

[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/redis/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target

使Redis服务开机自启生效
systemctl enable redis
检查Redis是否已成功设置为开机自启。
可以通过运行以下命令来确认新服务的设置
systemctl list-unit-files | grep redis
完成以上步骤后,您的Redis服务器应该会在每次系统启动时自动启动。

三、注意事项

1、我们要把redis.conf的dir配置修改成固定的路径,否则自启动时使用的dump.rdb不是原文件,会重新生成一个新的。
dir ./ 修改成 dir /usr/local/redis ,如下图:

2、启动重启之前需要手动保存一下,本例没有启用aof,直接关闭可能有数据丢失风险。操作命令如下

redis-cli -a 'password'
127.0.0.1:6379> BGSAVE
Background saving started
127.0.0.1:6379> lastsave
(integer) 1708435050

lastsave命令需要多执行几次,然后比对时间,可以根据以下命令查看
在linux环境下时间戳转换成日期格式

date -d @1708435050

确保已经把数据完整保存后就可以执行关闭Redis操作了

127.0.0.1:6379> shutdown

四、相关命令

关闭redis

redis-cli -h 192.168.0.231 -a 'password' shutdown

本机可以省略-h参数

redis-cli -a 'password' shutdown

或进入redis-cli后操作

127.0.0.1:6379> shutdown

查看 redis 数据大小

redis-cli -a 'password' dbsize
或
127.0.0.1:6379> dbsize

查看redis服务执行的命令情况

redis-cli -a 'password' monitor

实时监控 Redis 实例

redis-cli -a 'password' --stat

默认每秒输出一条新行,其中包含有用信息和每个采集点的请求次数差异

查看 redis 默认的最大连接数

redis-cli -a 'password' config get maxclients
# 或进入redis-cli后操作
127.0.0.1:6379> config get maxclients

查看 redis 默认存放备份文件的目录路径,配置文件中默认为 dir ./

redis-cli -a 'password' config get dir
# 或进入redis-cli后操作
127.0.0.1:6379> config get dir

查看备份 RDB 文件的名称,默认为 dump.rdb

redis-cli -a 'password' config get dbfilename
# 或进入redis-cli后操作
127.0.0.1:6379> config get dbfilename

到此这篇关于Redis突现拒绝连接问题处理总结的文章就介绍到这了,更多相关Redis拒绝连接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Redis高阶之容错切换的实现

    Redis高阶之容错切换的实现

    本文主要介绍了Redis高阶之容错切换的实现,当一台主节点宕机后,从节点会自动接管成为新的主节点,当原主节点恢复后,它不会自动成为主节点,需要通过手动操作将其重新设置为从节点,感兴趣的可以了解一下
    2025-02-02
  • redis stream 实现消息队列的实践

    redis stream 实现消息队列的实践

    本文主要介绍了redis stream 实现消息队列的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • CentOS8.4安装Redis6.2.6的详细过程

    CentOS8.4安装Redis6.2.6的详细过程

    本文给大家介绍CentOS8.4安装Redis6.2.6的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • Redis主从集群切换数据丢失的解决方案

    Redis主从集群切换数据丢失的解决方案

    这篇文章主要介绍了Redis主从集群切换数据丢失的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Redis的4种缓存模式分享

    Redis的4种缓存模式分享

    这篇文章主要介绍了Redis的4种缓存模式分享,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-07-07
  • Redis中缓存预热与缓存穿透解决方案

    Redis中缓存预热与缓存穿透解决方案

    Redis缓存预热与缓存穿透是Redis缓存使用中的两个重要概念,文章首先介绍了Redis缓存预热和缓存穿透的基本概念,然后详细阐述了它们的产生原因和解决方案,感兴趣的可以了解一下
    2023-12-12
  • Redis02 使用Redis数据库(String类型)全面解析

    Redis02 使用Redis数据库(String类型)全面解析

    这篇文章主要介绍了Redis02 使用Redis数据库(String类型)全面解析的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • 利用Redis lua实现高效读写锁的代码实例

    利用Redis lua实现高效读写锁的代码实例

    这篇文章给大家介绍了如何利用Redis lua实现高效的读写锁,读写锁的好处就是能帮助客户读到的数据一定是最新的,写锁是排他锁,而读锁是一个共享锁,需要的朋友可以参考下
    2024-01-01
  • Redis GEO地理信息定位功能

    Redis GEO地理信息定位功能

    Redis 提供了GEO地理信息定位功能,地理空间项(经度、纬度、名称),实现查找附近的人、上班打卡、自行车租赁、摇一摇等相关与地理位置信息的功能,这篇文章主要介绍了Redis GEO地理信息定位功能,需要的朋友可以参考下
    2023-12-12
  • redis的五大数据类型应用场景分析

    redis的五大数据类型应用场景分析

    这篇文章主要介绍了redis的五大数据类型实现原理,本文给大家分享五大数据类型的应用场景分析,需要的朋友可以参考下
    2021-08-08

最新评论