Node.js~ioredis處理耗時請求時串連數瀑增

來源:互聯網
上載者:User

標籤:uga   環境   發布   支援   標準   回應時間   id3   sop   currently   

回到目錄

關於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:6379new Redis(6380)   // 127.0.0.1:6380new Redis(6379, ‘192.168.1.1‘)        // 192.168.1.1:6379new 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://:[email protected]: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的具體操作!

感謝各位的閱讀!

 回到目錄

Node.js~ioredis處理耗時請求時串連數瀑增

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.