Утечка памяти в узле / экспресс / запрос - PullRequest
0 голосов
/ 12 февраля 2020

С тех пор, как мы добавили этот код, чтобы проверить, может ли наш API связываться с другим сервисом, объем памяти, записанный с помощью AWS, неуклонно увеличивается, пока контейнер не будет извлечен и перезапущен. За шесть дней он поднялся до 600% своего предыдущего стабильного состояния, перезапустился и сделал то же самое. Он делал это 4 раза подряд с одинаковой скоростью. API используется в течение дня с разными скоростями, но запросы проверки работоспособности - с постоянной скоростью.

Намерение состоит в том, чтобы использовать это как простую «канарейку в угольной шахте», так что мы видим, что наш API больше не может связаться с другой службой, мы знаем, что любые подлинные запросы данных будут терпеть неудачу

const request = require('basic-request');

...

app.get( '/healthcheck', ( req, res ) => {

  request.getResponse('https://' + process.env.UVAPI_ECO_HOST + ':' + process.env.UVAPI_ECO_PORT + '/rest/api/swagger.json',
'GET', null, (error: string, response: any) => {
    res.send({
        build:  process.env.ORIGINAL_BUILD_NUMBER,
        deploy:  process.env.DEPLOY_NUMBER,
        hash:  process.env.GIT_COMMIT,
        hostname:  process.env.hostname,
        service_status:  {
            ecoconnect: (error || String(response.statusCode) !== '200') ? 'failed' : 'ok'
            },
        tracking_id:  process.env.TRACKING_ID,
        version:  process.env.VERSION
    });
  });
} );

Ранее он создавал объект из process.env .______ значений и затем res.send его обратно. Только когда мы начали использовать request.getResponse , память начала накапливаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...