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拒绝连接内容请搜索电脑手机教程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持电脑手机教程网!