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

Быстрый Google Cloud SQL

Я всегда настраивал машины на стандартную установку LAMP, а недавно я тестировал внешнюю базу данных, настроенную с помощью Google Cloud SQL. Хотя удары по производительности, которые я получаю, кажутся немного необоснованными.

Средняя скорость загрузки моего сайта с локальной базой данных составляет 0,04 с. При подключении к Cloud SQL через SSL скорость загрузки составляет 0,4 с. ~ 10x медленнее, поэтому я исследовал это и узнал о пуле соединений и о том, что PHP не поддерживает его, но ODBC поддерживает, и это то, что, похоже, использует мой сервер, так что это хорошо, но ~ 10x медленнее все равно плохо.

Я попытался настроить прокси-сервер Cloud SQL в надежде, что это станет решением, но после настройки сегодня он дал мне скорость загрузки 5 с. ~ В 100 раз медленнее, поэтому определенно не решение.

Могу ли я что-то сделать, чтобы получить скорость, близкую к скорости локальной базы данных с помощью Google Cloud Platform, следует ли мне использовать какой-либо другой сервис для повышения производительности или мне просто нужно принять этот удар по производительности и жить с этим?

РЕДАКТИРОВАТЬ:
Подробнее о системе. Веб-сервер - это вычислительный экземпляр в Google Cloud Compute. И экземпляр Compute, и экземпляр SQL находятся в одной зоне с использованием g1-small (1 виртуальный ЦП, 1,7 ГБ памяти).

Вроде бы задержка около 1 миллисекунды.

Сравнение времени выполнения запросов: локальная база данных слева, удаленная база данных справа

Прямо сейчас каждый из этих запросов индивидуально отправляется по сети, поэтому использование множественного запроса может сэкономить мне много времени, если предположить, что PHP действительно отправляет все запросы в одном сетевом запросе.

Предполагая, что часть вашего стека Linux / Apache / PHP работает на локальном сервере, и вы находитесь где-то в том же полушарии, что и ваш сервер облачной базы данных ...

Но сначала давайте резюмируем, что происходит:

  1. Ваша программа PHP отправляет запрос в базу данных для выполнения.
  2. База данных анализирует запрос.
  3. База данных выполняет запрос и определяет, какие строки нужно вернуть.
  4. База данных считывает строки из хранилища (диска) и возвращает их.
  5. Строки передаются в программу PHP.
  6. Программа PHP обрабатывает строки.

Предположим, что Google Cloud SQL выполняет 2, 3 и 4 так же эффективно, как MySQL на вашем оборудовании. Может быть разница, особенно на шаге 4, если сервер Cloud SQL настроен на медленное хранение, но я не знаю, поэтому мы пока проигнорируем этот фактор.

Итак, факторы для анализа: 1 (отправка запроса в базу данных) и 5 ​​(отправка строк из базы данных на сервер PHP).

Когда вы запускаете базу данных на том же компьютере, что и ваш сервер Apache / PHP, практически нет задержек при отправке запроса. Передача строк из базы данных в программу PHP происходит через сокет Linux на том же хосте, так что, опять же, скорость почти мгновенная.

Когда вы перемещаете свою базу данных на другой сервер, чем ваш сервер Apache / PHP, но в том же центре обработки данных, у вас есть 1) некоторые сетевые задержки для запроса, чтобы добраться до базы данных (незначительная задержка, поскольку размер очень мал), и 5) время, необходимое для передачи результатов обратно в PHP. В зависимости от того, сколько строк возвращается, шаг 5 может занять гораздо больше времени, чем если бы база данных находилась на том же хосте. Однако это «намного больше» относительно - оно действительно незначительно в обычном центре обработки данных с сетью Gbps или лучше между серверами.

Теперь переместим сервер базы данных в Google Cloud. Какое у вас подключение к Интернету? Предположим, высококачественное оптоволоконное соединение 100 Мбит / с с низкой задержкой и интернет-провайдером.

Задержка сети между вашим PHP-сервером и базой данных просто увеличилась с <1 мс до> 30 мс - это 30-кратное увеличение задержки. На практике вы увидите увеличение более чем в 30 раз, потому что вы передаете намного больше информации - особенно на шаге 5 возврата данных из базы данных на сервер.

График Цифры задержки, которые должен знать каждый программист, который можно увидеть на многих сайтах, в статьях и книгах, дает вам хорошие стабильные возможности для размышлений. В некоторых местах вы можете найти это в различных формах.


Есть решение? Не зная больше, что вы пытаетесь делать, решать и производить, я бы сказал, что решение состоит в том, чтобы просто переместить вычислительные ресурсы (PHP) на облачную платформу Google, где они будут находиться рядом с базой данных.