Подключение к 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