Медленное открытие соединения, когда база данных на удаленном сервере - PullRequest
0 голосов
/ 20 апреля 2020

Я недавно запустил веб-сайт (онлайн-приложение) на одном виртуальном сервере с довольно высоким трафиком c. Чтобы немного масштабировать это решение, я переместил базу данных MySQL на другой виртуальный сервер.

Когда я потом протестировал приложение, оно работало довольно хорошо и быстро (но это было ночью практически без трафика). c). Внезапно утром каждый запрос занял 3 секунды. Я понял, что это просто открытие соединения с базой данных на другом сервере (без задержек в сети или задержки). Я использую PHP + MySQL (PDO). Я также попытался добавить "skip-name-resol" в MySQL config. Единственное, что помогло - это добавление PDO :: ATTR_PERSISTENT => true в сценарий подключения sql. Когда я его удаляю, все работает довольно хорошо, но только на 20-30 секунд. Затем снова возникает задержка в 3 секунды - есть ли какой-то буфер (?) - мое предположение ...

Я также не нажимаю MySQL max_connections . Когда база данных работала на одном сервере, она работала также без PDO :: ATTR_PERSISTENT => true. Вот часть кода, которая работает ок. 3 секунды (только соединение дБ), если постоянный параметр отсутствует:

$sql = new PDO("mysql:host=$ip;dbname=$dbname;port:3306;", $dbuser,
      $dbpass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4",
                    PDO::ATTR_PERSISTENT => true)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...