關於nodejs能同時接受多少個請求的問題?////zzz

來源:互聯網
上載者:User

標籤:

關於nodejs能同時接受多少個請求的問題?

最近學習node,看了很多教程,都在讚揚nodejs的非同步I/O,非同步I/O的特點就是,每接收一個請求,使用非同步呼叫處理請求,不用等待結果,可以繼續運行其他動作,也就是說可以繼續接受請求。那它到底能接受?於是,我寫了個程式來測試,代碼如下:

// server.js// 處理一個請求需要5秒,通過setTimeout設定5秒後響應var http = require("http");var n = 0;http.createServer(function (req, res) {    n++;    setTimeout(function() {        console.log("Accept " + n + "request.");        res.end("test");      }, 5000);}).listen(3000);
// client.js// 發送一個請求exports.send = function () {    var http = require(‘http‘);    var options = {        host: ‘localhost‘,        port: ‘3000‘,        path: ‘/‘,        method: ‘GET‘,    };    var req = http.request(options, function(res){        exports.counter += 1;        res.setEncoding(‘utf8‘);        res.on(‘data‘, function (c) {            //console.log(c);        });        res.on(‘end‘, function() {            exports.seccess += 1;            console.log("Response: " + exports.seccess);        });    });    req.end();};exports.seccess = 0;
// attack.js// 在1秒內發出約50000個請求var client = require(‘./client‘);var d = 1000,    t = Date.now();while(Date.now() - t < d) {    client.send();}console.log(‘end.‘);

運行server.js

> node server.js

運行atack.js發起請求,(經測試每秒能發出約50000個請求):

> node atack.js

結果:

Accept 5request.Accept 5request.Accept 5request.Accept 5request.Accept 5request.Accept 10request.Accept 10request.Accept 10request.Accept 10request.Accept 10request.Accept 15request.Accept 15request.Accept 15request.Accept 15request.Accept 15request.// 省略後面N條

通過結果可以知道server.js在5秒內只接受了5個請求,這是為什麼呢?

Node.js 的 socket 模組的一個限制導致的,好像是同一 IP 不能串連超過 5 個 socket。

試試 require(‘http‘).globalAgent.maxSockets = Infinity

關於nodejs能同時接受多少個請求的問題?////zzz

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.