Подключение к MySQL занимает много времени

Вот обычная клиентская сторона, отправляющая AJAX-запрос на сервер без использования каких-либо библиотек.

О базе данных:

В БД только 1 таблица, имеющая 2 столбца и 2 строки. Механизм хранения в InnoDB

ПРИМЕЧАНИЕ. Это тестовая БД. У меня также есть другая БД, имеющая 4 таблицы с 5000-6000 записей и 18 других таблиц с менее чем 500 записями

client.php:

<html>
...
<body>
  <button class="btn__">Send</button>
  <script>
    var btn = document.querySelector('.btn__');
    btn.onclick = function()
    {
       var xmlhttp = new XMLHttpRequest();
       xmlhttp.onreadystatechange = function()
       {
         if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
         {
            // document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
         }
       };
       xmlhttp.open("POST", "server_files/server.php", true);
       xmlhttp.send();
    }
  </script>
</body>
...
</html>

server.php (CASE # 1): нет запроса на соединение с базой данных

<?php

  // $con = mysqli_connect("host","username","pass","test_db");

  echo json_encode([
    'success' => true
  ]);
  exit();

(ответ занимает ~59 мс)

server.php (CASE # 2): запрос подключения к базе данных

<?php

  $con = mysqli_connect("host","username","pass","test_db");

  echo json_encode([
    'success' => true
  ]);
  exit();

(ответ занимает ~452 мс; этого не должно происходить, и этого не было до недели назад)

Почему для ответа требуется много времени, если я включаю эту строку соединения с базой данных?

РЕДАКТИРОВАТЬ: (просто положить, если это будет полезно, чтобы понять лучше)

Когда я бегу SHOW PROCESSLIST; когда клиент отправляет запрос AJAX, я вижу это,

РЕЗУЛЬТАТ ШОУ ПРОЦЕССЛИСТА

1 ответ

Решение

Из списка процессов кажется, что это не локальная база данных, то есть не на локальном, и вы не обращаетесь к ней с помощью localhost или 127.0.0.1.

Поэтому это может быть проблема, связанная с сетью или DNS. Проверьте проблемы с разрешением DNS и задержки в сети.

Если сервер БД находится на том же хосте и вы используете localhost в строке подключения, попробуйте изменить его на 127.0.0.1

Другие вопросы по тегам