Redis突现拒绝连接问题处理总结

2024-02-22 20:28

本文主要是介绍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

在这里插入图片描述

这篇关于Redis突现拒绝连接问题处理总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736403

相关文章

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制