#sql #amazon-web-services #amazon-ec2
Вопрос:
У нас есть приложение, которое в основном запрашивает базу данных SQL, работающую в Amazon AWS.
После нескольких месяцев попыток увеличить пропускную способность. Мы наткнулись на интересную находку. Мы используем Iperf для большинства наших тестов. Если мы используем параллельный коммутатор на Iperf, он максимально приближается к тому, что мы должны получать от нашего интернет-провайдера (около 500 Мбит). Однако без этого он достигает максимума только на скорости около 60 Мбит. Мы перепробовали все виды MTU, Гигантскую рамку, настройки размера окна. Настройка размера окна работает в Iperf, но она ничего не делает для реальных приложений.
Недавно мы узнали о сервисе Global Accelerator от AWS. Он в основном направляет ваше соединение к ближайшей географической пограничной точке, а затем продолжает маршрутизировать остальной трафик через внутреннюю сеть AWS. Короче говоря, это лучший маршрут от вас на месте до AWS.
Глобальный ускоритель увеличил нашу скорость в 2 раза. Теперь мы получаем 120 Мбит вместо 60 Мбит.
Я провел параллельный тест с Глобальным ускорителем, и мы получили целых 700-800 Мбит с 10 параллелями. Я использовал простой sftp для тестирования с реальным файлом. Я могу получить до 400 Мбит, выполняя 10 подключений вместе, если разделю файл на 10 частей и отправлю их с 10 отдельными транзакциями.
Итак, вот в чем вопрос. Есть ли способ разделить это на 10 частей с помощью SQL-трафика?
Возможно, есть способ написать простую программу, которая принимает весь трафик выше определенного размера и автоматически разбивает его на 10 частей? Так же, как это делает SFTP.
Возможно, на стороне клиента и сервера, которая перенаправляет трафик на SQL, как только он разделяется и собирает его обратно.
Я всегда представлял, что Операционная система или, по крайней мере, само программное обеспечение уже делает все это. Но, глядя на результаты тестов с Iperf и SFTP, кажется, что это не так. Он пытается соединить все в одно соединение.