Как Prefect масштабируется одновременно с тысячами рабочих процессов? - PullRequest
4 голосов
/ 06 августа 2020

У меня есть префект-сервер, работающий локально (версия ядра 0.13). Я вызвал flow.run () al oop 1000 тысяч раз на сервере с 64 ГБ ОЗУ и 32 ядрами ЦП. Когда он достиг ~ 300 запусков, он начал выдавать ошибки отказа в соединении от GraphQL.

Я все еще раздумываю, использовать ли Prefect для моих рабочих процессов, но похоже, что он использует слишком много оперативной памяти. Как Prefect масштабируется одновременно с тысячами рабочих процессов?

Я запускаю рабочий процесс с простым примером:

176 from flask import Flask
177 app = Flask(__name__)
178
179 import prefect
180 client = prefect.Client()
181
182 @app.route('/')
183 def hello_world():
184     client.create_flow_run("032275d0-6c31-4dc5-bf32-5b2afadbe531")
185     return 'Hello, World!'

Затем я вызываю REST API, чтобы запустить поток от 1 до 1000 .

for i in {1..1000}; do curl localhost:5000/; done

Я понимаю, что GraphQL использует много памяти (до 10 ГБ ОЗУ). Затем пользовательский интерфейс Prefect начинает зависать около 100.

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

1 Ответ

3 голосов
/ 06 августа 2020

Сервер Prefect с открытым исходным кодом не был разработан для такого масштаба; как описано в этом новом документе c, это одна из причин, по которой люди переходят на Prefect Cloud, которое предназначено для масштабирования и производительности.

...