1、应用程序会发起多少个请求连接?
1)对于php程序,以短连接为主。redis的连接数等于:所有web server接口并发请求数/redis分片的个数。
2)对于java应用程序,一般使用JedisPool(实现上是组合了apache common-pools),而连接池在jvm里面共享的(一个进程一个jvm)。
redis的连接数计算:应用程序的个数(tomcat) * 连接池的大小(假设pool都一样大)/ redis分片的个数。
有时为了保证请求快速得到响应,保持一定的空闲连接(setMinIdle)。

下面的配置中,在连接池饱和状态,最多有90个连接数(MaxTotal-MinIdle),保持10个空闲连接。
JedisPoolConfig config = new JedisPoolConfig();
                        config.setMinIdle(10);
                        config.setMaxTotal(100);              
                        config.setMaxWaitMillis(1000L);
                        config.setTestOnBorrow(true);
jedispool的推荐设置的参数:
(1)setMinIdle,保留一定的空闲连接池对象;
(2)setTestOnBorrow设置为true,每次从连接池中获取连接时,检查连接的有效性。
(3)setMinEvictableIdleTimeMillis,设置淘汰空闲连接的最小时间。
(4)连接池的大小不要设置过大,导致redis需要维持很多连接对象。

2、redis的连接数限制是多少?
在 Redis2.4 中,最大连接数是被直接硬编码在代码里面的,而在2.6版本中这个值变成可配置的。maxclients 的默认值是 10000
redis默认最多允许10000个连接。默认的1w个够用么?
redis如果每秒保持1w个连接,每个链接每秒执行1000个请求。每秒1000w的请求,这时候redis的cpu已经成为了性能瓶颈。
所以下面的测试结果显示,在6w的并发连接数情况下,qps只有5w。单个redis请求响应时间超过了1s。
经验而言,对于php程序而言,当1w个连接数占满了时候,实际上cpu已经出现了性能瓶颈。
还有另外两种状况。
1)慢查询引起,很多请求等待响应。     
2)php程序运行时间很长,且程序中没有主动关闭连接,处于空闲状态。
java程序一般是用连接池和长连接,如果redis有大量的连接,那么连接池的太大,且处于活动或者有效状态的连接很多。
解决方案是:1)减小连接池的大小。2)加快空闲连接对象的回收速度。
总结而言,redis连接数过大原因归结于两点:
1)redis处理能力不足,大量请求处于等待状态。不管是请求过多还是慢查询。
2)客户端的连接对象没有及时释放。不管是应用程序主动释放还是连接池没有及时回收。
既然知道原因,也就知道解决方案。借用别人的一句话,发现问题所在是最关键的。
目前php程序还没有碰到过大连的请求连接的问题,而Java程序已经碰到过多次。
 
3、连接数对redis有什么性能的影响?
在250一下的并发连接数情况下,redis的处理能力几乎一致。而随着并发连接数增加,处理能力反而下降。redis的单线程处理方式决定了,redis只能串行的处理客户端请求。

redis连接数的更多相关文章

  1. redis连接数问题

    redis连接数查看 info client redis连接数满了,不会继续建立连接. 造成redis连接数满了原因有很多. 1.建立新连接不close()的话redis连接不会回归连接池. 显示所有 ...

  2. 查看redis连接数

    在redis-cli命令行使用:info clients可以查看当前的redis连接数. 如下图: config get maxclients 可以查询redis允许的最大连接数. 如下图:

  3. 压测过程中,获取不到redis连接池,发现redis连接数高

    说明:图片截得比较大,浏览器放大倍数看即可(涉及到隐私,打了码,请见谅,如果有疑问,欢迎骚扰). 最近在压测过程中,出现获取不到redis连接池的问题 xshell连接redis服务器,查看连接数,发 ...

  4. redis连接数高居不下,怎么破?。。。。这么破

    最近项目一直在使用redis,首次用redis,随便从网上找了例子就用了,一开始用的还挺正常,后来发现,当客户端访问量一上来,redis的连接数居高不下,一开始以为是客户端没有关闭,开始怀疑redis ...

  5. RedisTemplate连接不释放、Redis断线不重连问题、Redis连接数高飙升

    使用RedisTemplate操作Redis数据,但遇到网络断线后不会重新连接 毫无头绪 一顿捣鼓 最终解决 整理如下 帮助更多的人 1.起因 使用RedisTemplate 配置 开启了事务 ena ...

  6. redis客户端连接,最大连接数查询与设置

    ##redis客户端连接数 redis通过监听一个TCP端口或socket的方式接收来自客户端的连接, 当与客户端建立连接后,redis内部会进行如下操作:()客户端socket会被设置为非阻塞模式, ...

  7. [转]细说Redis监控和告警

    原文  https://zhuoroger.github.io/2016/08/20/redis-monitor-and-alarm/? 对于任何应用服务和组件,都需要一套完善可靠谱监控方案. 尤其r ...

  8. redis其他问题

    如何解决redis高并发客户端频繁time out? 现在业务上每天有5亿+的请求,平时redis的操作在2K+每秒左右.到了高峰有3K+,这时候客户端就会频繁的报connect time out的异 ...

  9. 做个简单的Redis监控(源码分享)

    Redis监控 Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点.在随着业务,数据 ...

随机推荐

  1. c++双字符常量

    ascii表中 A是65,B是66,16706是A乘256+B 一些双字符的汉字也可以通过此方法转为int数字

  2. 常用的js跳转页面方法实现汇总

    1.window.location.href方式 <script language="javascript" type="text/javascript" ...

  3. PostgreSql常用脚本

    添加表字段 ALTER TABLE public.university ADD COLUMN "Province" character varying(10); COMMENT O ...

  4. Linux磁盘管理之逻辑结构主引导扇区02

    一.主引导扇区 主引导扇区位于硬盘的0磁道0柱面1扇区,共占用了63个扇区,但实际上只使用了512字节,由三大部分组成: 1.主引导记录MBR(Master Boot Record):占446字节. ...

  5. linux mysql 常用

    mysql -uroot -p输入密码进入 use database;使用指定的数据库 show tables;显示存在的表:describe 表名; source 目标文件.sql; 可以执行指定的 ...

  6. [转载] python的sorted函数对字典按key排序和按value排序

    1.sorted函数按key值对字典排序 先来基本介绍一下sorted函数,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参 ...

  7. 8、FTP,二种文本传输模式

    一.基本知识 1. FTP是 TCP/IP协议族 的协议之一,简称文件传输协议,主要用于远距离文件传输,如文件的上传和下载 2. 下面都是以VSFTP服务器为例 VSFTP服务器的用户有三种形式: 匿 ...

  8. 开发Eclipse自定义控件

    摘自:http://www.ibm.com/developerworks/cn/opensource/os-eclipcntl/ 我们在开发自定义控件时主要考虑以下问题: 1. 自定义控件的绘制:通常 ...

  9. 如何在TFS中恢复系统默认查询”已指派给我”的设置(TFS 2013)

    故事是这样开始的,一天开发人员求助说,在浏览器中修改了系统默认的工作项查询"已指派给我"的后,发现这个查询每次都提示超时,并且没有办法恢复到初始的设置状态,因为出现超时提示以后,查 ...

  10. 微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 的解决方案

    最近在做微信支付,帮客户部署好环境后,测试微信支付,发现点击支付后老是提示: get_brand_wcpay_request:fail, 于是找到代码中调用微信支付的代码段: WeixinJSBrid ...