开发者社区> 问答> 正文

Jedis异常处理方式的问题

落地花开啦 2016-02-25 15:27:04 1448

我用Jedis的SharedJedisPool,配置为 MaxActive=500,MaxIdle=100,MaxWait=2000,testOnBorrow=true。redis服务器是Linux CentOS 6.0 内存98G,redis本身所占内存1.9G,Maxclients=655328,Linux的fs.file-max=9876450。服务器机构是 一主两从,主实例只负责写和持久化,两个从实例负责提供客户端读操作。主从在不同的机器,两个从实例在同一台机器上,主从实例在同一局域网。客户端其实也 是服务端程序,为40个Tomcat的实例,每20个访问一个从实例,客户端和redis服务不在同一个机器但是在同一个局域网。当有大量并发请求 redis客户端服务时,Jedis经常报错:
1
or
2
其实发生这个错误的时候redis实例的connected_clients不足10000,大概就4000左右。使用redis-cli也连不上redis服务,报错:
Could not connect to Redis at 127.0.0.1:6381: Connection timed out
使用netstat -anlpt|grep 127.0.0.1:6381查看连接到redis服务的tcp连接,发现如下问题:
3
有些连接的Recv_Q和Send_Q不能很快的清空,redis服务的client list列表如下:
4
5
如果谁在使用redis的时候出现过同类的问题,如果解决?
redis服务端和Jedis客户端如何配置才合适?

NoSQL 网络协议 Java Linux 应用服务中间件 Redis
分享到
取消 提交回答
全部回答(2)
  • 白宸
    2019-07-17 18:47:35

    如果是connection time out的话这时候需要分析下服务端的问题还是客户端的问题,可能是因为服务端tcp backlog满掉了导致syn包drop掉,也可能是本地到服务端的网络出现问题了

    0 0
  • 落地花开啦
    2019-07-17 18:47:35

    没有正确的释放jedis resource 造成的web内存泄露和redis线程阻塞

    0 0
添加回答

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题