Нагрузочное тестирование heroku django+postgres: время отклика увеличивается, а не падает

Я тестирую свое приложение Django с помощью Locust. Я заметил странную вещь при применении нагрузки к веб-серверу: время отклика увеличивается до максимума (обычно в течение 10 секунд после начала загрузки), а затем снижается до стабилизации. В тот же момент количество запросов в секунду уменьшается, а затем снова увеличивается.

Примеры:

Нагрузка POST запросы с UUID и статусами доставки (эмуляция обновлений доставки сообщений).

Бэкэнд, который получает запросы, выполняет только одно действие: он выполняет одно обновление базы данных Postgres:

@csrf_exempt
def easysms_webhook(request):
    """
    Вебхук доставки сообщений для сервиса Easy SMS.
    """
    data = json.loads(request.body.decode('utf-8'))

    delivered = False
    if data['status'] == 0:
        status = ViberSMDelivery.OK
        delivered = True
    elif data['status'] == -1:
        status = ViberSMDelivery.ERROR
    elif data['status'] == 1:
        status = ViberSMDelivery.PROCESSING
    elif data['status'] == 5:
        status = ViberSMDelivery.READ
        delivered = True
    else:
        logger.error('Unsupported data status: {}'.format(data['status']))
        return HttpResponse()

    try:
        ViberSMDelivery.objects.filter(uuid=data['group_id']).update(
            status=status, delivered=delivered
        )
    except ViberSMDelivery.DoesNotExist:
        logger.error('ViberSMDelivery for %s is not exists', data['group_id'])

    return HttpResponse()

Итак, мой вопрос - почему он всегда достигает пика перед уменьшением? Похоже, каждый раз, когда веб-серверу Heroku требуется несколько секунд, чтобы "привыкнуть" к загрузке. Это почему?

Или это какая-то ошибка в том, как саранча подсчитывает статистику?

0 ответов

Другие вопросы по тегам