• redis其他问题


    如何解决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卡死。

  • 相关阅读:
    小议sql查询返回xml数据之应用【转载】 sansan
    JScript中Date.getTime转.Net中的DateTime sansan
    iFrame 跨域高度自适应问题解决 sansan
    使用第三方应用(天气预报、Google地图之类)不影响原来页面的加载 sansan
    【转载】今天心情非常好,再发一组 Linq、 集合、数组、Lambda、QuerySyntax 的文章 sansan
    高性能ASP.NET站点构建之简单的优化措施 sansan
    Linq to SQL sansan
    高并发量网站解决方案
    JAVA开源项目[转]
    淘宝下单高并发解决方案
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6042577.html
Copyright © 2020-2023  润新知