因此,我们有 2 台服务器都运行在同一个 Web 主机上。我们已绑定 MySQL 以监听数据库服务器的公共 IP 地址,并且 Web 服务器从公共 IP 连接到它。两台服务器都运行在同一个私有网络上。
目前,我们的 php 脚本中的 DB connect 方法大约需要 3ms 才能连接到 MySQL 数据库服务器主机。
我的问题是,如果我们将 MySql 绑定到数据库服务器上的私有 LAN 地址而不是公共 IP,那么来自 Web 服务器的数据交互是否会更快?或者无论如何它都是一样的,不会有什么不同。
我已将这个问题移至服务器故障绑定 MySQL 从公共或私有 LAN IP 地址运行 - 哪一个更快
答案1
零差异。说真的。无论哪种方式,相同的网络 (LAN) 都应该低于 1ms。MySQL 处理登录所需的时间很可能比操作系统分配缓冲区等所需的时间更长。
3MS 不应该是个问题,尤其是当你的程序员不是白痴并且使用连接池时。
https://stackoverflow.com/questions/830707/php-connection-pooling-mysql
回答有关它的问题。如果你真的在每个页面/使用上打开和关闭一个连接,那么 - 好吧,另一个不太称职的程序员。发生了。
如果仍然需要 3ms,并且这仍然是一个问题(这表明您的架构中存在其他问题,因为 3ms 本来就不应该是一个问题),则需要由专家进行深入分析。因为这样就不像“使用私有或公共 IP”那么简单了。
答案2
在这种情况下,更好的问题是:“我是否愿意为了性能而牺牲安全问题?”。
通过公共 IP 访问数据库是一种极其危险的部署,您需要非常好的安全性来确保不会发生任何不好的事情。如果您有一个公共 IP,人们可以并且会对其进行攻击;无论是出于好奇还是潜在的恶意。您被黑客入侵或以其他方式受到损害的可能性几乎肯定是 100%。
从性能角度来看,我期望在同一网络中访问私有 IP 比访问公共 IP 获得更好的性能。在私有 LAN 中,您可以更好地控制哪些流量可以访问端口,而不是访问公共 IP。
底线:除非有非常好的理由,否则将数据库放在公共 IP 上是不值得的。
希望这可以帮助!