Fast Google Cloud SQL

I have always set up machines to have a typical LAMP set up and recently I've been testing an external database set up with Google Cloud SQL. The performance hits I'm taking from it seem a bit unreasonable though.

The average load speed of my website with a local database is 0.04s. При подключении к Cloud SQL через SSL скорость загрузки составляет 0,4 с. Примерно в 10 раз медленнее, поэтому я исследовал это и узнал о пуле соединений и о том, что PHP не поддерживает его, но ODBC поддерживает, и это то, что, похоже, использует мой сервер, так что это хорошо, но примерно в 10 раз медленнее все равно плохо.

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

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

РЕДАКТИРОВАТЬ:
Дополнительная информация о системе. Веб-сервер - это вычислительный экземпляр в Google Cloud Compute. Both the Compute instance and the SQL instance are in the same zone using g1-small (1 vCPU, 1.7 GB memory).

It seems like the latency is about 1 millisecond.

Comparison of query runtimes: Local db on the left, Remote db on the right

Right now each of these queries is individually sent across the network, so using a multi query could save me a lot of time, assuming PHP actually sends all the query in a single network request.

0
задан 23 August 2018 в 02:26
1 ответ

Предполагая, что часть вашего стека 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, где они будут находиться рядом с базой данных.

0
ответ дан 5 December 2019 в 05:24

Теги

Похожие вопросы