代码之家  ›  专栏  ›  技术社区  ›  Wolfdog

express api服务器正在阻塞

  •  2
  • Wolfdog  · 技术社区  · 7 年前

    所以我正在测试我的api服务器。我想模拟如果1000个用户同时调用同一个路由会怎么样。为了验证这一点,我做了以下几点:

    const fetch = require('node-fetch');
    
    router.get('/test', async (req, res) => {
        let all = [];
        for (let i = 0; i < 1000; i++) {
            const a = fetch(`http://localhost:3001/custom/a`).then(res => res.json())
            all.push(a)
        }
    
        all = await Promise.all(all);
        res.json('finished')
    })
    

    我正在测试的路线是:

    router.get('/a', async (req, res) => {
        const video = await Video.find().limit(1).exec();
        res.json(video)
    })
    

    所以当我手动点击route(通过邮递员或浏览器)时,一次一个请求,响应时间大约是60毫秒。

    但当我启动1000个路由时,每个响应都像是在等待上一个路由完成。看看这个日志 PASTEBIN

    所以我想知道,我做错了什么?这里是谁在封锁?是Mongoose和Database(我尝试将池大小增加到1000,还是相同的),还是我误解了节点是如何工作的?

    0 回复  |  直到 7 年前
    推荐文章