Работа с удаленной базой данных MySQL. Почему медленная передача данных?
Привет.
Приложение на laravel 5.
В целях конфиденциальности база отдельно (собственник сервера один), код и картинки отдельно (собственник второй).
Объемы данных ворочаются большие. Когда все в куче на одном сервере (xeon 4core, 16gb ram, ssd) - все работает.
Когда настраивают подключение к базе данных RDS AWS Amazon - еле-еле ползает. Хоть и сервер выбирают мощный.
Что упустили в такой конфигурации?
UPD Инстанс с бд amazon во франкфурте, сервер в Вильнюсе. Согласно кода подключение к БД не закрывается. Laravel 5 eloquent делает жадную загрузку. Проблемы N+1 не должно быть
На сервере выделенка на 1 гигабит. Как можно найти сетевые задержки или проверить производительность tcp. Сервер ubuntu 14.04
Igor Makarov: я внимательно прочитал ваш вопрос :) После установки соединения этот флаг, разумеется, не влияет на скорость работы. Но соединение еще нужно установить, а формулировка вопроса очень расплывчатая. Именно об этом я и написал.
halenharper: ну вот у вас сервера в разных странах
а это пинг большой
то есть любой обращение между серверами предположим будет минимум 100мс так как быстрее чем сигнал электрический по проводу бежит скорости не достичь
итого если вы написали хорошо приложение и у вас всего 10 вызовов бд на странице то они будут выполняться минимум за 1 секунду с учетом того что база у вас работает моментально
а если вы говнокодер коих большинство то у вас под сотку быть вызовов к бд то это уже 10 секунд на открытие страницы
а так же если вы говнокодер и открываете и закрываете соединение к бд каждый раз то это уже 30 секунд минимум на открытие страницы
частично улучшить ситуацию может скажем поднятие инстанса во франкфурте или ирландии, так как по дефолту инстаны создаются в америке что очень далено и пингу туда местами 250 мс что ещзё больше ухудшает ситуацию
halenharper: ну тогда за несколько секунд должна каждая страница открываться, но в целом держать так далеко бд и сайт бесмысленно медленно и ничего тут не поделаешь скорее всего.
Традиционный ответ - либо переносите все максимально близко (в идеале 1 ДЦ вообще), либо по-максимуму кэшируйте все, что приходится доставать с удаленной БД, либо поднимайте зеркало на локальной машине с малокритичными данными, уменьшая кол-во передаваемого по сети.
Ну или все это сразу.