web-dev-qa-db-ja.com

MySQLへの接続に時間がかかります

これは、ライブラリを使用せずにAJAXリクエストをサーバーに送信する通常のクライアント側です。

データベースについて:

DBには、2つの列と2つの行を持つテーブルが1つだけあります。 InnoDBのストレージエンジン

[〜#〜]注[〜#〜]:これテストDBです。また、5000〜6000レコードの4つのテーブルと500レコード未満の18のテーブルを持つ別のDBがあります

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(ケース#1):データベースへの接続クエリがありません

<?php

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

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

(応答には約59msかかります)

server.php(ケース#2):データベースへの接続クエリ

<?php

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

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

(応答には約452ミリ秒かかります。これは発生しないはずであり、1週間前まで発生しませんでした)

データベースへの接続回線を含めると、応答に時間がかかるのはなぜですか?

編集:(よりよく理解するのに役立つかどうかを置くだけです)

実行するとSHOW PROCESSLIST;クライアントがAJAXリクエストを送信しているとき、私はこれを見ます、

SHOW PROCESSLISTの結果

1
Devang Mistry

プロセスリストから、それはローカルデータベースではないようです。つまり、ローカルホスト上になく、ローカルホストまたは127.0.0.1を使用してアクセスしていません。

したがって、ネットワークまたはDNS関連の問題である可能性があります。 DNS解決の問題とネットワーク遅延の問題を確認してください。

DBサーバーが同じホスト上にあり、接続文字列でlocalhostを使用している場合は、127.0.0.1に変更してみてください

0
Nasoo