2010-12-12 96 views
2

如果我在本地主機服務器上使用Java連接到MySQL,則可以立即訪問。
但是,如果我連接本地主機,從網絡PC(192.168.1.100),它是非常緩慢(4-5秒)。
而且,如果我從公共IP連接到我的MY SQL服務器,它也很慢(6秒或更長)。爲什麼連接到MySQL時Java很慢?

回答

6

由於您的計算機需要的時間將數據包發送到外部服務器,他們需要時間來發送數據包返回。這就是所謂的網絡延遲,並不是Java的問題,而是一個普遍的網絡問題。

1

網絡延遲加上連接創建時間是我的猜測。我不知道你在客戶端機器和MySQL服務器之間還有什麼。

8

「爲什麼」已被回答。這只是網絡延遲。

您可能還對如何「修復」它感興趣。答案是:使用connection pool。如果您正在運行Java Web應用程序,請使用Web服務器提供的連接池設施。以Tomcat爲例,請檢查this manual。如果您正在運行Java桌面應用程序,請使用像c3p0(教程here)這樣的像樣的連接池實現。

2

它總是需要更長的時間,使整個網絡的連接,而不是使本地相同的連接。然而,假設你有一個相當典型的本地網絡,4-5秒聽起來有點極端。我的猜測(這只是一個猜測)將是大部分額外的時間正在被網絡名稱解析(即DNS和/或netbios)消耗。

我會建議你使用數字IP地址,而不是名稱嘗試連接。

+0

我將第二次嘗試只是IP地址。 4-5秒對於網絡延遲似乎非常慢。 – 2010-12-13 00:02:03

+0

+1關於名稱解析的好處。 – BoltClock 2010-12-13 00:07:06

1

連接4秒鐘可能是一個DNS問題,不能只是一個純粹的網絡延遲。 嘗試使用「skip-name-resolve」參數啓動MySQL服務器以跳過將客戶端IP解析爲主機名。在此之前,請確保您的授權表基於IP和'本地主機'而不是符號名稱。