如果我在本地主机服务器上使用Java连接到MySQL,我会立即访问
但是,如果我从本地主机外部连接,从网络PC(192.168.1.100),它非常慢(4-5秒)。
而且,如果我从公共IP连接到我的MY SQL服务器,它也很慢(6秒或更长时间)。
答案 0 :(得分:8)
“为什么”已经得到了解答。这只是网络延迟。
你可能也对如何“修复”它感兴趣。答案是:使用connection pool。如果您正在运行Java Web应用程序,请使用Web服务器提供的连接池功能。以Tomcat为例,检查this manual。如果您正在运行Java桌面应用程序,请使用像c3p0这样不错的连接池实现(教程here)。
答案 1 :(得分:6)
因为您的计算机需要时间将数据包发送到外部服务器,并且需要时间来发回数据包。它被称为网络延迟,并不是Java特有的问题,而是一般的网络问题。
答案 2 :(得分:2)
在网络上建立连接总是比在本地建立相同的连接需要更长的时间。但是,假设您有一个相当典型的本地网络,4-5秒听起来有点极端。我的猜测(这只是一个猜测)将是大部分额外时间被网络名称解析(即DNS和/或netbios)消耗。
我建议您使用数字IP地址而不是名称来尝试连接。
答案 3 :(得分:1)
网络延迟加上连接创建时间将是我的猜测。我不知道客户端机器和MySQL服务器之间还有什么。
答案 4 :(得分:1)
连接4秒可能是DNS问题,不能只是纯粹的网络延迟。 尝试使用“skip-name-resolve”参数启动MySQL服务器,以跳过将客户端的IP解析为主机名。在此之前,请确保您的授权表基于IP和“localhost”而不是符号名称。