博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis其他问题
阅读量:6429 次
发布时间:2019-06-23

本文共 953 字,大约阅读时间需要 3 分钟。

如何解决redis高并发客户端频繁time out?

现在业务上每天有5亿+的请求,平时redis的操作在2K+每秒左右。到了高峰有3K+,这时候客户端就会频繁的报connect time out的异常。
但是,资料上说redis可以达到10W每秒。3K远远不到w这个级别啊,请问有什么建议优化现在的情况么?
答:
答:你可以把你应用的部署环境描述下,使用什么样的客户端,长连接还是短连接,redis是单机环境还是集群环境,redis是否配置了持久化,什么样的持久化方式,还有就是redis服务器的硬件设施,把这些描述清楚然后再分析原因。
 
最近刚在一个大型活动中大量使用了Redis,前几次线上高并发模拟的确出现了类似题主的问题。修正方式有二:
1.服务器对TCP和HTTP的限制(直接拒绝或超时)
2.Redis对并发数的限制(maxclients参数,Once the limit is reached Redis will close all the new connections sending an error 'max number of clients reached'.)
对了,我的平台是Windows+.Net+Redis(ServiceStack)

Redis的单线程属性

Redis 使用了单线程的设计, 意味着单线程服务于所有的客户端请求,使用一种复用的技术。这种情况下redis可以在任何时候处理单个请求, 所以所有的请求是顺序处理的。这和Node.js的工作方式很像, 所有的产出通常不会有慢的感觉,因为处理单个请求的时间非常短,但是最重要的是这些产品被设计为非阻塞系统调用,比如从套接字中读取或写入数据。

我提到过Redis从2.4版本后几乎是单线程的,我们使用线程在后台运行一些效率低下的I/O操作, 主要关系到硬盘I/O,但是这不改变Redis使用单线程处理所有请求的事实。

 

总结:就是reids本身性能没有问题,处理并发能力ok,就是跨服务器远程访问其他服务器reids时,并发大了,网络延迟等,会出现取reids卡死。

转载地址:http://mnyga.baihongyu.com/

你可能感兴趣的文章
用CNN对文本处理,句子分类(简单理解卷积原理)
查看>>
call、apply、bind
查看>>
安卓jni调用
查看>>
Flex中ModuleManager的一个bug
查看>>
C# 实现MD5加密
查看>>
cocos2d-x JS 字符串
查看>>
Cocos2d-js3.3 模态对话框的实现
查看>>
最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用34
查看>>
SharePoint2013使用资源管理器打开失败
查看>>
【330】word - VBA 相关实现
查看>>
团队开发环境一致性性要求
查看>>
Lambda表达式
查看>>
SQL Server 事务复制爬坑记
查看>>
python中文件的读和写操作
查看>>
EL遍历集合
查看>>
Python PIL
查看>>
BootStrap--响应式设计
查看>>
Rust hello world !
查看>>
hdu 6206 : Apple 【计算几何 + 分数类】
查看>>
R - 递推
查看>>