Я решил проверить, как решение будет работать в стрессовых условиях, и сделал около 100 вызовов. за короткий промежуток времени (1-5 секунд). Для завершения каждого вызова требовалось больше времени, но я заметил кое-что странное: с каждым вызовом время ожидания между запуском и фактическим выполнением первой команды увеличивалось. Некоторые из них длились более 30 секунд. Я предполагал, что вызовов слишком много, но когда я запускаю более простую функцию (без вызова какой-либо базы данных, просто возвращающую json), каждое выполнение занимает примерно одинаковое количество времени.
Это привело меня к выводу, что соединение с БД может быть проблемой, но когда я попытался измерить, сколько времени занимает получение данных из БД, оказалось, что это не должно вызывать проблемы. Основным фактором продолжительности обработки вызова является задержка между триггером и началом выполнения. Журнал ниже лучше показывает, что я имею в виду.
Код:
Код: Выделить всё
@app.route(route="get_start_stop", auth_level=func.AuthLevel.ANONYMOUS)
def get_start_stop(req: func.HttpRequest) -> func.HttpResponse:
logging.info('get_start_stop - HTTP trigger')
start_stop_tic = time.perf_counter()
# retrival of data from database
start_stop = repository_service.get_start_stop()
start_stop_toc = time.perf_counter()
logging.info(f'get_start_stop returned start: {start_stop.get("start")},'
f'stop: {start_stop.get("stop")},'
f'time of execution: {start_stop_toc - start_stop_tic:.6f} seconds')
return func.HttpResponse(json.dumps(start_stop), status_code=200)
Журналы:
Код: Выделить всё
2024-05-08 20:42:13.033 Executing 'Functions.get_start_stop' (Reason='This function was programmatically called via the host APIs.', Id=f55d807c-1dfc-4b30-86d7-cb351d310dd2) Information
2024-05-08 20:42:31.179 get_start_stop - HTTP trigger Information
[...]
2024-05-08 20:42:31.314 get_start_stop returned start: 2024-04-10T22:00:00Z,stop: 2024-06-13T22:00:00Z,time of execution: 0.136382 seconds Information
2024-05-08 20:42:31.315 Executed 'Functions.get_start_stop' (Succeeded, Id=f55d807c-1dfc-4b30-86d7-cb351d310dd2, Duration=18282ms) Information
- Почему происходит задержка? Не могли бы вы подсказать мне, что еще мне следует проверить?
- Связано ли подключение к БД с задержкой? Или эти несколько дополнительных операций меняют ситуацию и складываются?
- Происходит ли масштабирование автоматически? Могу ли я проверить, создаются ли дополнительные узлы?
Подробнее здесь: https://stackoverflow.com/questions/784 ... -functions