Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 处理多个请求时node.js中出现ETIMEDOUT错误_Javascript_Node.js_Reactjs_Autoscaling - Fatal编程技术网

Javascript 处理多个请求时node.js中出现ETIMEDOUT错误

Javascript 处理多个请求时node.js中出现ETIMEDOUT错误,javascript,node.js,reactjs,autoscaling,Javascript,Node.js,Reactjs,Autoscaling,我有一个用node编写的服务器,它使用mysql作为数据库,前端用react编写。我的应用程序托管在一台具有4核cpu的专用服务器上。前端必须加载板球赔率,我使用的是第三方api。react应用程序根据matchId将请求发送到我的节点服务器,然后服务器将请求发送到第三方api并接收赔率,然后将其传递到前端。代码如下: router.get('/getSession/:matchId',(req,res)=>{ axios.get('http://178.62.105.2

我有一个用node编写的服务器,它使用mysql作为数据库,前端用react编写。我的应用程序托管在一台具有4核cpu的专用服务器上。前端必须加载板球赔率,我使用的是第三方api。react应用程序根据matchId将请求发送到我的节点服务器,然后服务器将请求发送到第三方api并接收赔率,然后将其传递到前端。代码如下:

router.get('/getSession/:matchId',(req,res)=>{
    
    axios.get('http://178.62.105.201/api/v1/listMarketBookSession?match_id='+req.params.matchId)
            .then(response => {
               
                return res.status(200).json({
                    success:true,
                    data:response.data
                })
            })
            .catch(error=>{
                console.log(error);
                return res.status(200).json({
                    success:false,
                    data:[]
                })
            });
})
请求每500毫秒发送一次。当用户较少时,应用程序工作正常。当用户数增加到400时,它发送502错误一段时间,然后再次开始接收响应。这是一个循环

GET example.com/oddsApi/getSession/30189407 502
(anonymous) @ 2.e2450141.chunk.js:2
e.exports @ 2.e2450141.chunk.js:2
e.exports @ 2.e2450141.chunk.js:2
Promise.then (async)
s.request @ 2.e2450141.chunk.js:2
r.forEach.s.<computed> @ 2.e2450141.chunk.js:2
(anonymous) @ 2.e2450141.chunk.js:2
value @ main.7f6055f1.chunk.js:1
setTimeout (async)
(anonymous) @ main.7f6055f1.chunk.js:1
Promise.catch (async)
value @ main.7f6055f1.chunk.js:1
setTimeout (async)
(anonymous) @ main.7f6055f1.chunk.js:1
Promise.catch (async)
value @ main.7f6055f1.chunk.js:1
main.7f6055f1.chunk.js:1 TypeError: Cannot read property 'data' of undefined
    at main.7f6055f1.chunk.js:1
调用赔率的代码:-

getOdds() {

        axios.get('/getSession/' + this.props.eventId)
            .then(response => {

                if (response && response.data.data.length && response.data.data[0] !== "\n") {

                    response.data.data.sort((a,b)=>a.SelectionId-b.SelectionId)

                    this.setState({ sessions: response.data.data });
                    if (this.flag)
                        this.intervalID = setTimeout(this.getOdds.bind(this), 300);
                }
                else if (!response.data.data.length) {
                    this.setState({ sessions: null });
                }
            })
            .catch(error => {
                if (this.flag)
                    this.intervalID = setTimeout(this.getOdds.bind(this), 500);
                console.log(error);
            })
    }
在componentDidMount上调用

   componentDidMount() {
        this.getOdds();
    }
我还尝试记录响应的持续时间。持续时间是可变的。以下是一些回应

Market.js:80 1752
Market.js:80 390
Market.js:80 310
Market.js:80 722
Market.js:80 16002
Market.js:80 15326
Market.js:80 330
Market.js:80 1758
Market.js:80 1144
Market.js:80 308
Market.js:80 709
Market.js:80 324
Market.js:80 351
Market.js:80 647
Market.js:80 375
Market.js:80 406
Market.js:80 701
Market.js:80 345
Market.js:80 1776
Market.js:80 1187
Market.js:80 414
Market.js:80 715
Market.js:80 20327

正如你所看到的,有时需要20秒左右的时间才能做出反应,这让我感到噩梦。当我联系第三方API提供商时,他们告诉我他们的API可以处理20000多个用户。我无法调试该问题。也许我还没有准备好我的应用程序进行扩展。请帮忙

您能告诉我们如何调用
getLobbits
函数吗?如果您的服务器达到400个用户,那么查看服务器的性能等级或图表会很有帮助。我不是一个服务器管理员,但我认为,如果直到400个用户都正常运行,并且从400开始,这可能是一个性能问题。当然,它应该在您的请求代码中的某个地方被截获,然后在componentDidMountCheck中调用.getLobbits检查您的sql查询是否运行
count(*)
。如果是这样的话,这可能是罪魁祸首。我无法理解您的解决方案@T348575您能告诉我们如何调用
GetOffics
函数吗?如果服务器的400个用户都使用了,那么查看服务器的性能等级或图表会很有帮助。我不是一个服务器管理员,但我认为,如果直到400个用户都正常运行,并且从400开始,这可能是一个性能问题。当然,它应该在您的请求代码中的某个地方被截获,然后在componentDidMountCheck中调用.getLobbits检查您的sql查询是否运行
count(*)
。如果是这样,可能就是罪魁祸首。我无法理解您的解决方案@t348575
Market.js:80 1752
Market.js:80 390
Market.js:80 310
Market.js:80 722
Market.js:80 16002
Market.js:80 15326
Market.js:80 330
Market.js:80 1758
Market.js:80 1144
Market.js:80 308
Market.js:80 709
Market.js:80 324
Market.js:80 351
Market.js:80 647
Market.js:80 375
Market.js:80 406
Market.js:80 701
Market.js:80 345
Market.js:80 1776
Market.js:80 1187
Market.js:80 414
Market.js:80 715
Market.js:80 20327