Нагрузочное тестирование 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 требуется несколько секунд, чтобы "привыкнуть" к загрузке. Это почему?
Или это какая-то ошибка в том, как саранча подсчитывает статистику?