Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express.js处理1000个简单请求的时间过长_Javascript_Node.js_Performance_Express_Performance Testing - Fatal编程技术网

Javascript Express.js处理1000个简单请求的时间过长

Javascript Express.js处理1000个简单请求的时间过长,javascript,node.js,performance,express,performance-testing,Javascript,Node.js,Performance,Express,Performance Testing,我正在测试我的express.js服务器应用程序的性能,处理1000个简单请求需要太多时间(最多15秒) 我编写了一个简单的nodejsexpressapi,以便在将来的大负载密集型api中实现它。api的工作原理是完美的,但一旦我处理了大量并发请求,性能就不是预期的了。 在未来,预期的场景是数千名用户在1-5秒内不间断地发送请求,因此这是一个关键部分 我编写了另一个脚本来发送505001000。。。。请求几乎立即从我自己的工作站(本地主机,数据包不会到达网络)发出,并设置api来处理请求,只需

我正在测试我的express.js服务器应用程序的性能,处理1000个简单请求需要太多时间(最多15秒)

我编写了一个简单的nodejsexpressapi,以便在将来的大负载密集型api中实现它。api的工作原理是完美的,但一旦我处理了大量并发请求,性能就不是预期的了。 在未来,预期的场景是数千名用户在1-5秒内不间断地发送请求,因此这是一个关键部分

我编写了另一个脚本来发送505001000。。。。请求几乎立即从我自己的工作站(本地主机,数据包不会到达网络)发出,并设置api来处理请求,只需回答“OK”

处理100个请求所需的时间是3秒,500个请求需要15秒,依此类推。 考虑到cpu从未达到50%,预期性能不是期望的。 我还尝试过将请求的数量拆分为发送更多的发送者脚本,但结果完全相同

这些是没有集群的Express.js的预期数字吗

我用于测试的脚本:

var request = require('request');

let url = "http://localhost:3000/playground";


let requestsNumber = 5000;

(async () => {
    try {

        console.log(' ## INIT ##');
        let date0 = new Date().getTime();


        await makeAllRequests();

        console.log('Elapsed ms: '+(new Date().getTime()-date0));
        console.log('DONE')

    } catch (e) {
        console.log(e);
    }
})();

async function makeAllRequests(){

    let promises = [];

    for(let i=0;i<requestsNumber;i++){
        promises.push(makeRequest());
    }

    console.log('Finish sending requests')
    return Promise.all(promises);
}

async function makeRequest(){

    return new Promise(resolve => {

        request.get(
            url,
            function optionalCallback(err, httpResponse, body) {

                if (err){
                    console.error('Error:', err);
                }
                resolve();
            });
    })
}
var request=require('request');
让url=”http://localhost:3000/playground";
让requestsNumber=5000;
(异步()=>{
试一试{
console.log(“###INIT##”);
让date0=newdate().getTime();
等待makeAllRequests();
log('expessed ms:'+(new Date().getTime()-date0));
console.log('DONE')
}捕获(e){
控制台日志(e);
}
})();
异步函数makeAllRequests(){
让承诺=[];
for(设i=0;i{
请求(
网址,
函数optionalCallback(err、httpResponse、body){
如果(错误){
console.error('error:',err);
}
解决();
});
})
}

如何测试它?它是另一个独立脚本,通过在数组中存储承诺来生成给定数量(101001000…)的请求。它在不到一秒钟的时间内执行得相当快。我不明白为什么你说你的服务器处理所有1000个请求需要15秒,而你的脚本发出所有请求只需要1秒。不,这不是预期的结果。我的NodeJS服务器的应答时间小于5ms(并且多个并行应答),即使对于更复杂的API查询也是如此。我敢打赌,您执行负载测试的脚本出错了。您是否尝试过与Postman ping?脚本将不到一秒钟的时间将所有请求强制转换到服务器,然后开始等待服务器回答所有请求。服务器是缓慢响应每个请求的服务器。您如何测试它?它是另一个独立脚本,通过在数组中存储承诺来生成给定数量(101001000…)的请求。它在不到一秒钟的时间内执行得相当快。我不明白为什么你说你的服务器处理所有1000个请求需要15秒,而你的脚本发出所有请求只需要1秒。不,这不是预期的结果。我的NodeJS服务器的应答时间小于5ms(并且多个并行应答),即使对于更复杂的API查询也是如此。我敢打赌,您执行负载测试的脚本出错了。您是否尝试过与Postman ping?脚本将不到一秒钟的时间将所有请求强制转换到服务器,然后开始等待服务器回答所有请求。服务器是一个缓慢响应每个请求的服务器。
var request = require('request');

let url = "http://localhost:3000/playground";


let requestsNumber = 5000;

(async () => {
    try {

        console.log(' ## INIT ##');
        let date0 = new Date().getTime();


        await makeAllRequests();

        console.log('Elapsed ms: '+(new Date().getTime()-date0));
        console.log('DONE')

    } catch (e) {
        console.log(e);
    }
})();

async function makeAllRequests(){

    let promises = [];

    for(let i=0;i<requestsNumber;i++){
        promises.push(makeRequest());
    }

    console.log('Finish sending requests')
    return Promise.all(promises);
}

async function makeRequest(){

    return new Promise(resolve => {

        request.get(
            url,
            function optionalCallback(err, httpResponse, body) {

                if (err){
                    console.error('Error:', err);
                }
                resolve();
            });
    })
}