Я недавно запустил веб-сайт (онлайн-приложение) на одном виртуальном сервере с довольно высоким трафиком 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));