redis连接错误:ERR max number of clients reached

事情呢,是这样的。早上突然看到反馈说redis连接异常,就是这个:max number of clients reached。问题很显然就是redis连接数超了,设置一下最大连接数就好了。

1.登录redis服务器,查看下最大连接数

    CONFIG GET maxclients

2. 看下当前连接数

    INFO clients

  

    这里的3877是由于停了一小部分程序,减少了redis连接,否则命令行登录时也会显示连接超过最大值

3.既然这个数目不够,那就加呗

    CONFIG set maxclients 8000

你以为这样就可以了?对,我也是这么以为的。然而。。。出现了这个:(error) ERR The operating system is not able to handle the specified number of clients, try with 4064

一通百度+google下来,似乎都说要重启服务设置参数启动,线上重启有点过分了。虽然没能从正面解决问题,但还是给了一些思路。

4.查看系统相关设置

     ulimit -a

这里其实阿里云服务器系统参数默认已经做了优化

5.看一下当前redis进程的进程号

    ps -ef | grep redis

得到进程号为28888

6.至此,我们可以来看一下当前redis进程的相关参数配置描述

    cat /proc/28888/limits

上图中Max open files            4096                 4096                 files 值得引起关注,这个应该就是解决问题的关键

所以有没有办法去动态 改变这个值呢?

7.修改正在运行的进程limits限制

     sudo echo -n 'Max open files=10000:10000' > /proc/28888/limits

     -bash: /proc/20822/limits: Permission denied

???啥情况?不能修改??? 兄dei莫慌,切换到root就可以为所欲为(滑稽)

    切换到root后:

          echo -n 'Max open files=10000:10000' > /proc/28888/limits

          bash: echo: write error: Invalid argument (如果出现了这个,可能是系统内核版本高了,请使用下面一句)

          prlimit --nofile=10000:10000 --pid 28888

8.再瞄一眼redis进程的相关信息

    cat /proc/28888/limits

诶呦~ 不错哦~ 改过来了,目测离成功不远了

9.设置更大的redis client连接数吧,后浪

    CONFIG SET maxclients 9600

    

到这里这个问题基本上算是解决了,这也算是当年由于经验不足给自己挖的坑,幸好爬出来了。生产上的配置在初始的时候其实可以避免出现这种问题,不过既然来了,这句话就是多余。。。

 

参考文章:

https://blog.csdn.net/tengxing007/article/details/88354218

https://ask.csdn.net/questions/253239?sort=id

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一种开源的内存数据库,用于数据缓存和存储。当使用jedis客户端连接Redis时,可能会遇到一些异常情况。其中一种异常是"redis.clients.jedis.exceptions.jedisdataexception: err wrong number of arguments",意为参数个数错误。 该异常通常是由于Redis命令的参数个数不匹配引起的。在使用jedis发送Redis命令时,如果命令所需的参数数量与实际传递的参数数量不一致,就会触发该异常。 发生这种异常的原因可能有几种: 1. 参数个数不足:当执行某个Redis命令时,如果没有提供足够的参数,就会抛出该异常。例如,执行"SET"命令时,至少需要两个参数:key和value,如果只提供了一个参数就会触发异常。 2. 参数个数过多:同样地,当执行Redis命令时,如果提供了多于所需数量的参数,也会引发该异常。Redis命令的参数数量是固定的,如果传递的参数超过了该数量,就会抛出异常。 3. 参数类型错误:有些Redis命令对参数的类型有特定的要求。如果传递了错误类型的参数,也可能会导致该异常的发生。 解决该异常的方法是确保传递给Redis命令的参数数量和类型与命令的要求一致。可以通过参考Redis官方文档或jedis客户端的使用手册来了解每个命令的参数要求。 此外,还需要确保使用正确的方法调用来执行Redis命令,例如使用正确的方法名称和正确的参数顺序。 总结起来,redis.clients.jedis.exceptions.jedisdataexception: err wrong number of arguments异常是由于Redis命令的参数数量或类型不正确导致的。通过检查参数的数量和类型是否与命令要求一致,可以解决此异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值