Redis 连接池报错:jwtCalibrateHandler 48 max number of clients reached

news2024/12/26 21:00:51

问题

[ERROR 2023-01-06 15:37:58,877] jwtCalibrateHandler 48 max number of clients reached

早上突然看到反馈说redis连接异常,就是这个:max number of clients reached。问题很显然就是redis连接数超了.

原因分析

redis maxclients 是redis server的重要配置,它决定了客户端的最大连接数量,最大客户端连接数量。由于redis不区分连接是客户端连接还是内部打开文件或者和slave连接等,所以maxclients最小存在32个连接数,如果超过了设置的maxclients,redis会给新的连接发送"max number of clients reached",并关闭连接。

在Redis 2.4中,可以同时处理的最大客户端数量存在硬编码限制。 在Redis 2.6中,此限制是动态的:默认情况下,它设置为10000个客户端,除非Redis.conf中的maxclients指令另有说明。

解决思路

绝大部分原因是由于客户端很多空闲连接都没有被及时释放掉从而导致connected_clients非常高,其他可能就是maxclients设置的太少了,或者就是软硬件存在限制。

客户端

1、设置超时时间(客户端找各自框架设置即可)

JedisPoolConfig jedisPoolConfig = initPoolConfig();

jedisPool = new JedisPool(jedisPoolConfig, "*.*.*.*", 6379);

================================================>

JedisPoolConfig jedisPoolConfig = initPoolConfig();

jedisPool = new JedisPool(jedisPoolConfig, "*.*.*.*", 6379,2*1000);

服务端

断开空闲连接

建议先断开部分客户端,不然由于报错:max number of clients reached,无法创建连接。
  1. 使用redis-cli进入命令行,使用info clients 查看客户端连接数,然后使用client list查看当前连接的客户端。

  1. 设置参数timeout(客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能)自动断开连接,键入config set timeout 600

可以看到连接数由3430变为709减低了不少,当然也可以选择使用CLIENT KILL命令来杀掉客户端连接。

-------------------------到此这个问题基本可以解决,下面部分选读-----------------------------------------

设置maxclients

配置文件redis.conf

maxclients 10000

启动参数

$ ./redis-server --maxclients 10000

命令

CONFIG set maxclients 10000

系统平台

由于创建连接数需要分配和消耗系统资源,所以在设置maxclients的时候系统是有预设限制的,如上,10000个连接数是现在redis版本的默认值,由于系统软硬件限制,redis-server启动时候是无法分配到资源的

$ ./redis-server --maxclients 10000
[41422] 23 Jan 11:28:33.179 # Unable to set the max number of files limit to 10032 (Invalid argument), setting the max clients configuration to 4096.
# 获取redis PID
$ ps -ef | grep redis-server
# 获取redis的能够打开的最大文件描述符
cat /proc/{PID}/limints

图中Max open file这行参数可以看得到进程能够打开的最大文件描述符为4096(ll /proc/{PID}/fd | wc -l可以查看已经产生的个数)并非10000,受到了软硬件限制,这可能产生报错的最根本原因。

为了设置maxclients这个参数,官网给与了解决方案,使用ulimit为系统范围的设置,详见Maximum number of clients

这个方式的前置条件是 hard limit is big enough ,会看上面的截图,Max open file的硬件限制也是4096,达到了最大值,于是有了如下的解决方案

1、编辑/etc/security/limits.conf

# 具体设置多少根据实际情况而定
* soft nofile 65536      # open files  (-n)
* hard nofile 65536
 
* soft nproc 65565
* hard nproc 65565       # max user processes   (-u)

2、保存重新登录服务器即可

参考文章

JedisPool returnResource and returnBrokenResource https://github.com/xetorthio/jedis/pull/912

redis报错“max number of clients reached" https://blog.51cto.com/11819159/1916133

Redis连接的客户端数过高 https://blog.csdn.net/cxhgg/article/details/67640263

Redis Clients Handling https://redis.io/topics/clients#maximum-number-of-clients

linux中ulimit作用 https://www.cnblogs.com/kongzhongqijing/p/5784293.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware vCenter Server Appliance空间不足问题处理

原创作者:运维工程师 谢晋 前提提要 客户环境为VSAN环境,VCSA版本为6.7,偶然间发现VSAN监控的性能不能正常打开,如下图:     后登陆https://VCSAIP:5480发现出现告警,报错log日志满了 故障处理 开…

rabbitmq+netcore6 【3】Publish/Subscribe:发布/订阅

文章目录1)前言2)临时队列3)绑定4)综合以上代码准备工作1、生产者2、消费者13、消费者25)验证官网教程原文链接: https://www.rabbitmq.com/tutorials/tutorial-three-dotnet.html翻译版参考链接&#xff1…

大话测试数据(二):概念测试数据的获取

在大话测试数据(一)文章中,我提到,获取数据的第一步是获取概念上数据。这一步看起来简单,其实不是那么容易。获取概念数据和获取需求的过程是交织在一起的,事实上,它们其实是一个事儿&#xff0…

Ribbon、Feign、Hystrix超时重试熔断问题

文章目录问题描述重试次数不生效开启熔断后重试次数生效fallbackFactory回退降级异常为空问题1分析问题2、3分析总结feign请求次数计算Hystrix超时时间设置公式问题描述 在使用Ribbon、Feign、Hystrix组合时,因为配置的问题出现以下现象,让我的大脑CPU烧…

[SWPU2019]Web1

目录 [SWPU2019]Web1 无列名查看表数据 不使用列名查询表中数据 [SWPU2019]Web1 首先我们先注册,登录进来后看到如下界面: 我们点击申请发布广告,并发送: 查看广告详情,发现疑似存在注入点: 于是我们在发…

Docker 应用篇 | Docker 学习笔记总结

Docker 视频内容可以参考黑马程序员的Docker篇 详细完整内容可以查询菜鸟教程:Docker 教程 本篇博文主要让读者对Docker有一个基本理解并可以借助Docker发布自己的项目 一、初识Docker 1.1 Docker概述 Docker是一个集装箱式的思想 Docker可以让开发者打包他们的…

招聘求职系统|基于Springboot+Vue+Nodejs实现求职招聘系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

电脑系统更新后桌面的文件全部不见了怎么恢复?

电脑系统更新是很常见的一种情况,自动更新电脑系统后我们可以进行更优质的使用体验,但是最近有位小伙伴,出现了win10电脑系统更新后桌面文件丢失情况,那么电脑系统更新桌面文件没了怎么办?电脑系统更新桌面文件不见了怎…

实验二十三 基于时间的ACL配置及策略

实验二十三 基于时间的ACL配置及策略实验要求: 某公司通过router实现各部门之间的互连。公司要求禁止销售部门在上班时间(8:00 至18:00)访问工资查询服务器(IP地址为192.168.10.10),财务部门不受限制,可以 随时访问。网络拓扑图:实…

如何定义算法?10分钟带你弄懂算法的基本概念

算法是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。 编程界的“Pascal之父”Nicklaus Wirth有一句人尽皆知的名言:“算法数据结构程序”…

【目标检测】G-GhostNet

1、论文 论文题目:《GhostNets on Heterogeneous Devices via Cheap Operations》 论文地址: https://arxiv.org/pdf/2201.03297.pdf 代码地址: https://github.com/huawei-noah/CV-Backbones 2、引言 本文针对网络部署时面临的内存和资源…

python提取excel文本框内容

就提取excel文本框的内容,提供两种方法 一、 转成pdf,识别pdf文字 该方法需要注意两点: 1.似乎只能识别选中的文字(图片不行) 2.会受到精度影响(即有可能识别出错字) 以下是代码 先转存为pdf格…

IB中文解析,助力冲7分

我们知道,IB、AP、A Level三大国际课程体系都有中文,尤其IB学生,由于必选一门母语与语言,中文成了必选项。IB中文可以说是很多IB学子的心头大患了,引发焦虑的文章比比皆是。 不少家长看到这可能会问,中国学…

【Linux 进程地址空间】

1.程序地址空间的概率&#xff08;C/C的说法不够准确&#xff09;写一段代码来来证明C/C程序地址空间是按上图分布的&#xff1a;#include<stdio.h> #include<string.h> #include<stdlib.h> int uninit; int init100; int main() {printf("code addr:%p…

Anaconda中安装CUDA版本的PyTorch

Question: GPU是一种擅长处理专业计算的处理器。这与中央处理器&#xff08;CPU&#xff09;形成鲜明对比&#xff0c;中央处理器是一种擅长处理一般计算的处理器。CPU是为我们电子设备上大多数典型计算提供动力的处理器。GPU的计算速度比CPU快得多。但是&#xff0c;情况并非…

经验证短视频账号每天最多发3个视频,超过的不予推荐

经验证短视频账号每天最多发3个视频&#xff0c;超过的不予推荐 前两天我在刷短视频的时候&#xff0c;看到一个博主推荐一天可以发几十个视频&#xff0c;感觉有点不对&#xff0c;决定还是自己试一下。 于是&#xff0c;在死亡边缘疯狂试探了好几天&#xff0c;终于得到想要…

在ESXi系统上安装pve

pve是基于debian的&#xff0c;在ESXi上选择系统时建议选择debian并开启虚拟化一、下载下载&#xff1a;https://www.proxmox.com/en/downloads点进下载网站后选择 Proxmox Virtual Environment-->ISO Images-->Proxmox VE 7.3 ISO Installer 下的download按钮二、安装系…

React组件

React组件1.组件基本介绍2.React创建组件的两种方式2.1 函数组件2.2 类与继承2.2.1 class 基本语法2.2.2 extends 实现继承1.组件基本介绍 组件是React中最基本的内容&#xff0c;使用React就是在使用组件组件表示页面中的部分功能多个组件可以实现完整的页面功能组件特点&…

【无人机路径规划】基于IRM和RRTstar进行无人机路径规划(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

java后端第二阶段:JavaWeb

一、Mysql 定义&#xff1a;关系型数据库&#xff0c;存储在硬盘数据安全。 1.SQL通用语法 注释&#xff1a; 单行注释 -- 注释内容 或 #注释内容&#xff08;MySQL特有&#xff09; 多行注释 /* 注释 */ DDL&#xff1a;操作数据库&#xff0c;表等 DML&#xff1…