NodeJs + Express API постепенно потребляет больше ресурсов ЦП - PullRequest
0 голосов
/ 13 марта 2019

У нас есть Node / Express API, который вызывает конечную точку SAP, анализирует ответ и помещает проанализированный полезный груз в redis.API работает в док-контейнере и разворачивается с помощью AWS ECS.Я использую модуль запроса для вызова конечной точки SAP, передаю ответ по потоку JSON и запускаю карту для каждого полученного чанка.API очень отзывчив, как только он развернут, но постепенно становится медленнее (более 10 часов).Метрики ECS указывают на увеличение загрузки процессора.Я также настроил новый мониторинг реликтов, который показывает, что большая часть времени затрачивается на вызов SAP API, но при проверке журналов шлюза SAP мы обнаружили, что API отвечает в течение одного и того же времени на каждый вызов.Я перепробовал почти все, но рисую пробел.Я использую альпийское изображение узла (если это имеет значение).

Что я вижу в New Relic, так это то, что запрос задерживается, поскольку он ожидает разрешения нисходящего вызова (SAP API),Время ожидания постепенно увеличивается, что увеличивает общую задержку.

Вот мой код для вызова API-интерфейса SAP и анализа ответов:

return new Promise((resolve, reject) => {
    const url = `<COMPUTE SAP-URL>`;
    logger.debug(`Sending request : ${url}`);
    const options = {
        url,
        auth: {
            user: <username>
            pass: <password>
        },
        json: true
    };
    const stream = request.get(options)
        .pipe(JSONStream.parse('*.*'))
        .pipe(es.mapSync((data) => {
            // process data here
        }));

    stream.on('error', reject).on('end', () => {
        logger.debug('Completed the processing of the response from SAP');
        return resolve(formattedResponse);
    });
});

Я добавил New Relicразбивка транзакций и диаграммы использования процессора ECS для справки.

Может ли кто-нибудь указать мне направление в отношении того, что происходит?

Разбивка новой транзакции реликвии

поломка процессора ECS

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