![LAN 経由の DB 接続が WAN 接続よりも遅くなるのはなぜですか?](https://rvso.com/image/1302255/LAN%20%E7%B5%8C%E7%94%B1%E3%81%AE%20DB%20%E6%8E%A5%E7%B6%9A%E3%81%8C%20WAN%20%E6%8E%A5%E7%B6%9A%E3%82%88%E3%82%8A%E3%82%82%E9%81%85%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
私は長い間、LAN 経由の MySQL データベース接続がインターネット経由のデータベース接続よりも大幅に遅いことに気づいていました。
私は Windows 7 32 ビットを実行しており、イーサネット ケーブルを使用してスイッチに接続しています。スイッチは、建物内でインターネット接続が到達するモデム/ルーターに接続されています。WiFi は使用していません。
次のコードを実行しました:
//store current time
$start = microtime(true);
//connect to database outside my LAN
$c1 = mysql_connect("1.2.3.4", "user1", "pass1");
mysql_select_db("database1", $c1);
//print out the time taken in seconds
echo microtime(true) - $start, "<br>";
//close the database connection
mysql_close($c1);
//store current time
$start2 = microtime(true);
//connect to database on my LAN
$c2 = mysql_connect("192.168.0.10", "user2", "pass2");
mysql_select_db("database2", $c2);
//print out time taken in seconds
echo microtime(true) - $start2, "<br>";
//close database connection
mysql_close($c2);
3 回実行した結果、次の時間が返されました。
外部 WAN データベース: 0.054498910903931、0.055356025695801、0.05623197555542
内部 LAN データベース: 5.0052859783173、5.0053160190582、5.005627155304
LAN ファイル転送速度 (Ubuntu マシン上のドライブを共有するために Samba を使用) は約 30 MB/秒で、ブロードバンド接続速度はダウンロード 35 Mbps、アップロード 7 Mbps です。
逸話的に言えば、SSH を使用してローカル サーバーにログインすると、かなり時間がかかります。
他にどのような情報が必要か分かりませんので、詳しくお尋ねください。なぜローカル接続が必要なのかわかりません。それではるかに遅いです!
答え1
Wireshark を使用して接続トラフィックを検査したところ、失敗していると思われる MDNS 要求がいくつか見つかりました。
その後私はUbuntuネームサービススイッチ構成のこのバグそして、/etc/nsswitch.conf
最後の手段としてmDNSを使用するようにファイルを変更しました。Ubuntu サーバーのネットワーク構成ページ。
必要なサービス (MySQL、SSH) を再起動すると、すべてが魔法のように高速化されました。