Проблемы с производительностью кеша при атаке с несколькими запросами - PullRequest
4 голосов
/ 27 марта 2020

Я работаю над API, который получит много хитов, поэтому я его кешировал. Каждый вызов будет иметь набор идентификаторов, которые должны быть переданы в самом запросе, и я не могу использовать пакет для получения элементов из-за проблем с дизайном. Поэтому я вызываю операцию get несколько раз для всех eventIds

async function getSummaryFromDax(id) {
        const perf = perfMeasure({enable: true});
        let params = {
            TableName: Table,
            Key: {
                id
            }
        };
        //todo dax not working as expected.
        perf("parallel");
        const result = await daxCacheClient.get(params).promise();
        perf("parallel");

        return {result: result.Item,perf: perf._summary};
    }

Эта функция проверяет функциональность. Я просто жестко закодировал идентификатор.

const {queryStringParameters= {}} = event;
    const {calls = 1, id = "CwjPJ4rcdIOOi3yFhpHhDiHzHKo-w8aRaVAYR"} = queryStringParameters;
    dummy.length = calls;
    dummy.fill(id);
    const proms = dummy.map(async id=>{
        return getSummaryFromDax(id)
    })


    const response = await Promise.all(proms);
    perf("handler");

Если звонки = 1 , значит, будет получен вызов на 1 дБ. Время, необходимое для получения ответа БД, составляет 2 мс . Когда я увеличиваю количество вызовов, скажем, 100 , я получаю среднюю производительность 200 мс за каждая операция get. Почему это происходит?

...