zoukankan      html  css  js  c++  java
  • Node.js~ioredis处理耗时请求时连接数瀑增

    回到目录

    关于redis连接数过高的解释

    对于node.js开发环境里,使用传统的redis或者使用ioredis都是不错的选择,而在处理大数据请求程中,偶尔出现了连接池( redis服务端的最大可用连接数,默认为1万)不够用的情况,一般的提示如下:

    It was not possible to connect to the redis server(s); to create a disconnected multiplexer, disable AbortOnConnectFail

    在redis-cli上输入info命令也可以进行查看

     redis-server.conf里配置了它默认的最大连接数

    maxclients 10000

    产生它的原因有几个:

    1. 单个请求使用结果后,没有释放,client.end()没有使用,这主要是redis组件
    2. 而使用了ioredis组件后,需要redis会自动释放,但时机也是http请求结束之后才执行,所以对于长时间没有响应的请求,也会出现占用redis线程的问题,解决方法手动使用redis.quit()即可
    3. 单个请求时间过长,导师redis连接一直被一个请求占用,而在请求数过多时,这种现象就会引用连接池不够用
    4. 多线程环境下(非node.js),使用了实例模块,而没有使用单例模式,因为很多redis驱动是支持多路复用的

    大叔建议的作法:

    减少单次请求的响应时间,建议把redis从一个大请求中拿出来,因为纯redis还是很快的

    正确使用redis组件,用完就关了

    正确理解多线程与socket连接,要知道socket连接直接影响你的服务器CPU性能

    ioredis代码实例

    ioredis是个好东西,它完全支持了redis的cluster,sentinal等新技术

    new Redis()       // Connect to 127.0.0.1:6379
    new Redis(6380)   // 127.0.0.1:6380
    new Redis(6379, '192.168.1.1')        // 192.168.1.1:6379
    new Redis('/tmp/redis.sock')
    new Redis({
      port: 6379,          // Redis port
      host: '127.0.0.1',   // Redis host
      family: 4,           // 4 (IPv4) or 6 (IPv6)
      password: 'auth',
      db: 0
    })

    同时支持标准的字符连接串

    // Connect to 127.0.0.1:6380, db 4, using password "authpassword":
    new Redis('redis://:authpassword@127.0.0.1:6380/4')

    支持发布与订阅,它会存储在进程里,它不会被持久化,所有会有消息丢失的情况

    var Redis = require('ioredis');
    var redis = new Redis();
    var pub = new Redis();
    redis.subscribe('news', 'music', function (err, count) {
      // Now we are subscribed to both the 'news' and 'music' channels.
      // `count` represents the number of channels we are currently subscribed to.
    
      pub.publish('news', 'Hello world!');
      pub.publish('music', 'Hello again!');
    });

    好了,下次我们有时间去讲讲ioredis的具体操作!

    感谢各位的阅读!

     回到目录

  • 相关阅读:
    做凭证时不显示货币
    凭证字段显示、保存布局等操作
    没有控制范围分配给公司代码
    拓端tecdat|R语言用Garch模型和回归模型对股票价格分析
    拓端tecdat|R语言混合图形模型MGM的网络可预测性分析
    拓端tecdat|R语言对推特twitter数据进行文本情感分析
    拓端tecdat|R语言广义线性模型GLM、多项式回归和广义可加模型GAM预测泰坦尼克号幸存者
    拓端tecdat|R语言:结构方程模型、潜变量分析
    拓端tecdat|R语言对股票风险“溃疡指数”( Ulcer Index)曲面图可视化
    django项目设置
  • 原文地址:https://www.cnblogs.com/lori/p/6871904.html
Copyright © 2011-2022 走看看