首页 > 解决方案 > OKD 请求 ETIMEDOUT - nodejs @ Production

问题描述

我被困在过去几天。我已经用谷歌搜索了,但没有任何东西可以帮我获取结果。以下代码适用于我的本地 m/c,所有结果均在 4 毫秒内获取。但是在生产级别,以下代码会引发网关超时错误。该应用程序部署到 OKD(节点模块-okd-api)集群上,我的应用程序是它的 pod 之一。

在这里,我正在获取所有的 pod

                   let fetchListarr=[];
                            aws_app.get('/List',  (req,res) =>
                            {
                                try
                                {
                                    Promise.all(promisesArray).then(values => {
                                    // do stuff with values here         
                                    res.send(values)
                                    })
                                    .catch((err)=>{console.log(err)});
                                }
                                catch (e){console.log( e);}
                            });
                            var WMArr=[];
                            var prom1 = new Promise(function(resolve, reject) {    
                                    let config = {
                                    cluster:'my/url/to/openshift',
                                    user: 'user',
                                    password: 'password',
                                    strictSSL:  false
                                    };
                                    login(config)
                                                .then(okd=>{
                                                    okd.namespace('namespace').pod.watch_all(pods=>{
                                                            pods.map((v)=> {
                                                                    if(!WMArr.includes(v.object.metadata.labels.app))
                                                                        {                       let obj = {
                    TargetServiceName: v.object.metadata.labels.app,
                    Instance:
                    WMArr.lastIndexOf(v.object.metadata.labels.app) ===
                    WMArr.indexOf(v.object.metadata.labels.app)
                        ? 1
                        : WMArr.lastIndexOf(v.object.metadata.labels.app) + 1,
                    Status: v.object.status.phase
                };
                                                                                fetchListarr.push(obj);
                                                                        }
                                                                    WMArr.push(v.object.metadata.labels.app);
                                                                    });
                                                            })
                                                            setTimeout(function() {
                                                            resolve( fetchListarr);
                                                            }, 5000);
                                                    })
                                                .catch(err=>{console.log(err)})
                                });
                            var promisesArray= [prom1];

增加超时是不行的。

任何人都可以让我知道代码的问题吗?

或者我需要在哪里配置超时设置(我是使用 OKD(openshift)部署应用程序的新手)

标签: node.jspromiseopenshiftnode-modulesconnection-timeout

解决方案


推荐阅读