Многопоточность для сложных задач транскодирования в NodeJS на flex GAE - PullRequest
0 голосов
/ 23 октября 2019

Я транскодирую множество MP4 в FLAC / WAV, используя fluent-ffmpeg для flex GAE
Подумав, как GAE будет обрабатывать 10-20 одновременных операций транскодирования

Транскодирование вычислительно дорого, а GAE может? порождать новые экземпляры для каждого запроса, если не оптимизированы

app.yaml

runtime: nodejs
env: flex

resources:
  cpu: 2
  memory_gb: 3.75

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 30
  cpu_utilization:
    target_utilization: 0.8

Есть ли способ распределить нагрузку на один экземпляр GAE? Веб-работники узла?
Какой обычный раздел resources в app.yaml для таких задач?

1 Ответ

0 голосов
/ 23 октября 2019

Если вы хотите избежать создания новых экземпляров (горизонтальное масштабирование) для каждого запроса, вам следует работать с вертикальным масштабированием - выберите достаточно мощный класс экземпляра , который, по вашему мнению, будет достаточным для обработки ваших запросов. и затем установите параметр max_num_instances в соответствии с вашим желанием. Конечно, знание того, как вы структурируете и разрабатываете свой код «экономичным» способом, является наиболее важной частью.

Если вы хотите быть уверенным, что работает только один экземпляр GAE, установите ручное масштабирование и выберите instances: 1. Или оставьте его на автоматическом масштабировании и установите max_num_instances: 1. (Я не пробовал это, но я не понимаю, почему это не сработает).

Имейте в виду, что измените значение параметра max_concurrent_requests на любое желаемое значение. По умолчанию будет установлено значение 10. Таким образом, вы не сможете обрабатывать более 10 одновременных запросов одновременно.

...