nodejs express server api - много запросов - событие l oop застряло? - PullRequest
0 голосов
/ 16 января 2020

Итак, скажем, у меня есть 2 микро-службы, которые взаимодействуют друг с другом - MS1 и MS2.

Так что для этого примера у MS1 есть 150 запросов на получение от MS2, я использую Promise.all для их отправки .

Для каждого запроса от MS1, MS2 делает вызов ios .get на другой сервер вне моего контроля. Время реакции этого сервера невероятно медленное - примерно до 10 минут на вызов.

Так что в ожидании этого другого сервера MS2 принимает следующий запрос.

Итак, у меня 150 запросов, и каждый раз, когда мы достигаем точки ожидания медленного сервера, я предполагаю, что API начинает обрабатывать следующий запрос.

Мой сервер также имеет конечную точку / health для kubernetes, которая при получении всех этих запросов , MS2 перестает отвечать или очень медленно отвечает на / health, что заставляет kubernetes завершать и перезапускать мой модуль.

Это потому, что чрезмерное количество запросов к MS2 блокирует событие l oop? или я что-то здесь упускаю?

Добавление кода: MS1: API


const express = require('express');
const router = express.Router();
var axios = require('axios')
var test = require('./test')


module.exports = router.get('/placeHolder', async (req, res, next) => {

    console.log("im working");

    // test();

    // console.log("test done");
    try {


        var x = await test();

        res.status(200);

        res.json({
            test: x
        });
    }
    catch (err) {

        res.status(500)

        res.json(err)

    }




});


MS test. js:

var axios = require('axios')
module.exports = async () => {

    try {

        var x = await axios.get("http://localhost:8096/placeholder_services/placeholder2")

        return x
    }
    catch (err) {

        console.log(err.message);


        return err

    }



}

MS2 API:


const express = require('express');
const router = express.Router();




module.exports = router.get('/placeHolder2', async (req, res, next) => {

    console.log("im working");




    setTimeout(() => {

        console.log("im done");

        res.status(200);

        res.json({
            test: "ok"
        });
    }, "60000");



});


А скажем, я посылаю 150 запросов через почтальона одновременно

Спасибо :)) 1026 *

...