Play Framework - производственные настройки потоков / соединений БД для AWS - PullRequest
0 голосов
/ 25 февраля 2020

У нас есть приложение Play Framework, и мы сталкиваемся с производственными проблемами. Мне любопытно, какие настройки люди использовали в вашем production.conf, чтобы ваш веб-сервер не работал медленно. У нас есть базовое c веб-приложение, которое связывается с Mysql, отправляет электронные письма, текстовые сообщения и имеет портал входа в систему.

Если вы используете экземпляр AWS EC2 (например, t2. большой) сколько потоков вы устанавливаете в своем пуле потоков, сколько подключений в вашем пуле соединений с базой данных и какие ваши Xms и Xmx для памяти установлены на?

Спасибо.

1 Ответ

1 голос
/ 26 февраля 2020

Если вы используете AWS EC2 экземпляр (скажем, t2.large), сколько потоков вы установите в своем пуле потоков

Я думаю, что это может быть одним из возможно root причина проблем, с которыми вы сталкиваетесь. Использование одного ThreadPool, или, точнее, ExecutionContext, который обертывает некоторый ExecutorService (например, FixedThreadPoolExecutorService), считается плохой практикой, поскольку один и тот же экземпляр EC внутри приложения может использоваться для операций блокировки, таких как база данных. доступ - например, MySql в вашем случае, что в конечном итоге приведет к блокировке всего потока и проблемам с производительностью в других частях приложения, таких как обработка нового соединения или рендеринг ответа.

Что вам нужно будет сделать, это использовать различные EC экземпляры для блокирующих и неблокирующих операций - назовем их frontend EC (для неблокирующих) и backend EC (для блокирующих).

  • frontend EC, которые необходимо использовать в просмотр и уровни обслуживания (контроллеры API, бизнес-логика c и т. д. c.);
  • backend EC, которые необходимо использовать на уровне приложений DAO или при любых возможных блокировках;

Способ распределения ресурсов между этими двумя EC действительно зависит от контекста. Например, вы можете начать с 80% потоков для frontend EC и других 20% backend EC, а затем продолжать настройку, пока не получите желаемый результат производительности.

Но в целом вопрос, который вы задаете, зависит от много контекста - там нет серебряной пули, как обычно в машиностроении.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...