Назад | Перейти на главную страницу

AWS (EC2 и RDS) Проблема производительности в разных регионах

У меня есть сервер RDS в Японии и два экземпляра EC2, один в ЕС, а второй в Японии.

Я запускаю одно приложение на экземпляре Japan EC2, которое подключается к RDS (Япония). В этом приложении я просто выбираю данные из базы данных одновременно в 200 потоков, и оно работает нормально, без ошибок.

Но когда я запускаю то же приложение на экземпляре EC2 ЕС с 200 потоками, которые в это время связываются с RDS (Япония), я получаю следующую ошибку:

System.InvalidOperationException: истекло время ожидания. Период таймаута истек до получения соединения из пула. Это могло произойти из-за того, что все соединения пула использовались и был достигнут максимальный размер пула.

Очевидно, что между EU EC2 и Japan RDS будет задержка в сети.

Существуют ли какие-либо настройки, которые помогут мне игнорировать эту ошибку и успешно установить связь с 200 соединениями из экземпляра EC2 в ЕС с японской RDS?

Как вы уже упоминали, между ЕС и Японией существует некоторая задержка в сети. Я предполагаю, что большинство приложений не предназначены для такой настройки - обычно серверы приложений и серверы db расположены близко друг к другу.

Я мог бы придумать несколько обходных путей:

  • Увеличьте время ожидания в вашем приложении
  • Включить сжатие для подключения RDS
  • Используйте какую-то репликацию от региона к региону, если это возможно.
  • Если вы запускаете веб-приложение, создайте прокси-сервер (http) в ЕС.
  • Пытаться Аврора, который поддерживает межрегиональную репликацию