很早以前我就注意到 LAN 上的 MySQL 資料庫連線比 Internet 上的資料庫連線慢很多。
我運行的是 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);
三次,回傳以下次數:
外部廣域網路資料庫:0.054498910903931、0.055356025695801、0.05623197555542
內部區域網路資料庫:5.0052859783173、5.0053160190582、5.005627155304
LAN檔案傳輸速度(使用Samba在Ubuntu機器上共用驅動器)約為30MB/s,我的寬頻連線速度為下行35Mbps,上行7Mbps。
有趣的是,使用 SSH 登入本機伺服器非常緩慢。
我不知道您可能需要什麼其他信息,所以請詢問更多信息,我很困惑為什麼本地連接是所以慢得多!
答案1
我使用 Wireshark 檢查連接流量,發現許多 MDNS 請求似乎失敗。
後來我遇到了Ubuntu 名稱服務切換配置的此錯誤並更改/etc/nsswitch.conf
文件以使用 mDNS 作為最後的手段,如Ubuntu伺服器網路配置頁。
重新啟動所需的服務(MySQL、SSH)就像魔法一樣加快了一切!