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. ORA-01858: 在要求输入数字处找到非数字字符

    数据库   date  字段问题  insert into  WK_RE_LE  (DACL_FILE_ID,DACL_GROUP_ID,BDCDYH,DACL_LENGTH,ISVALID,DACL ...

  2. Android getevent

    详细用法如下: 源码复制打印? Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] ...

  3. C中的数组与指针问题

    反复在数组名与指针上犯错误,特记录下. ,,,,}; int *p, *q; p = (); q = (); *(p+1)?   *(q-1) ? 答案是 3, 5.这里主要涉及的问题就是指针参与运算 ...

  4. css3中变形与动画(三)

    transform可以实现矩阵变换,transition实现属性的平滑过渡,animation意思是动画,动漫,这个属性才和真正意义的一帧一帧的动画相关.本文就介绍animation属性. anima ...

  5. switch结构的用法

    已知学生的名字和百分制分数.要求根据学生的百分制分数,分别采用"满分","优秀","良好","及格"和"不及格 ...

  6. 网格测地线算法(Geodesics in Heat)附源码

    测地线又称为大地线,可以定义为空间曲面上两点的局部最短路径.测地线具有广泛的应用,例如在工业上测地线最短的性质就意味着最优最省,在航海和航空中,轮船和飞机的运行路线就是测地线.[Crane et al ...

  7. HDU2929 Bigger is Better[DP 打印方案 !]

    Bigger is Better Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. CF 676B Pyramid of Glasses[模拟]

    B. Pyramid of Glasses time limit per test 1 second memory limit per test 256 megabytes input standar ...

  9. 另类Unity热更新大法:代码注入式补丁热更新

    对老项目进行热更新 项目用纯C#开发的? 眼看Unity引擎热火朝天,无数程序猿加入到了Unity开发的大本营. 一些老项目,在当时ulua/slua还不如今天那样的成熟,因此他们选择了全c#开发:也 ...

  10. KEngine:Unity3D资源的打包、加载、调试监控

    资源模块做什么? 资源模块——ResourceModule,是KEngine中最核心的模块,其他模块基本或多或少的对它有依赖,它主要的功能是:资源打包.路径定义.资源管理.资源调试. 资源模块对Uni ...