当前位置: 首页 > news >正文

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

四、相关命令

  1. 关闭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
  1. 查看 redis 数据大小
redis-cli -a 'password' dbsize
或
127.0.0.1:6379> dbsize

在这里插入图片描述

  1. 查看redis服务执行的命令情况
redis-cli -a 'password' monitor

在这里插入图片描述

  1. 实时监控 Redis 实例
redis-cli -a 'password' --stat

在这里插入图片描述
默认每秒输出一条新行,其中包含有用信息和每个采集点的请求次数差异

  1. 查看 redis 默认的最大连接数
redis-cli -a 'password' config get maxclients
# 或进入redis-cli后操作
127.0.0.1:6379> config get maxclients

在这里插入图片描述

  1. 查看 redis 默认存放备份文件的目录路径,配置文件中默认为 dir ./
redis-cli -a 'password' config get dir
# 或进入redis-cli后操作
127.0.0.1:6379> config get dir

在这里插入图片描述

  1. 查看备份 RDB 文件的名称,默认为 dump.rdb
redis-cli -a 'password' config get dbfilename
# 或进入redis-cli后操作
127.0.0.1:6379> config get dbfilename

在这里插入图片描述

http://www.lryc.cn/news/304062.html

相关文章:

  • css中选择器的优先级
  • python3字符串内建方法split()心得
  • html的列表标签
  • 【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture04反向传播
  • PyTorch使用Tricks:学习率衰减 !!
  • 10MARL深度强化学习 Value Decomposition in Common-Reward Games
  • 2 Nacos适配达梦数据库实现方案
  • 【Gitea】配置 Push To Create
  • 关于postgresql数据库单独设置某个用户日志级别(日志审计)
  • 阿里云ECS香港服务器性能强大、cn2高速网络租用价格表
  • 实战打靶集锦-025-HackInOS
  • list.stream().forEach()和list.forEach()的区别
  • JS基础之JSON对象
  • 嵌入式学习之Linux入门篇——使用VMware创建Unbuntu虚拟机
  • 大模型中的token是什么?
  • 跳表是一种什么样的数据结构
  • 【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
  • ETL快速拉取物流信息
  • 17.1 SpringMVC框架_SpringMVC入门与数据绑定(❤❤)
  • Leetcode 11.盛水最多的容器
  • 《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)
  • 【论文精读】IBOT
  • Yolo V5在实时视频流中的建筑物与彩钢房检测:性能评估与改进方法
  • 图——最小生成树实现(Kruskal算法,prime算法)
  • Unity3D xLua开发环境搭建详解
  • Python笔记-super().init(root)的作用
  • 【git 使用】使用 git rebase -i 修改任意的提交信息/合并多个提交
  • 【Vue3】toRefs和toRef在reactive中的一些应用
  • 力扣精选算法100道——Z字形变换(模拟专题)
  • Elastic Stack--01--简介、安装