如果 Web 服务器(apache/php)和数据库服务器(mysql)位于完全不同的位置且主机不同,会对性能产生什么影响?
编辑:这是一个数据库密集型 Web 应用程序,因此每个页面都会多次访问数据库。数据库通常是 Web 应用程序中的瓶颈,只是想知道与数据库交互的典型速度相比,网络速度是否很重要。
答案1
这在很大程度上取决于两个地点之间的连接速度。一些公司在其数据中心之间拥有高速主干网,但听起来你看到的是两家不同的公司。由于连接是通过互联网和不受任何一家公司控制的线路进行的,因此这个问题没有确切的答案。
如果可能的话,我会尽量避免。如果您确实认为这是最佳方法,请研究类似 memcache 的东西来减轻从数据库查询的压力。
答案2
如果 Web 服务器(apache/php)和数据库服务器(mysql)位于完全不同的位置且主机不同,会对性能产生什么影响?
是的,这会影响性能,而且都是负面的。这样的系统可以工作,特别是如果两个系统通过 VPN 连接,并且服务水平协议基于正常运行时间和性能。如果你只是通过“云”进行连接,你将无法获得一致的网络性能,也无法获得一喉窒息如果连接性或性能下降。
只是想知道与数据库交互的典型速度相比,网络速度是否重要。
这将完全取决于你的网络速度和你的数据库和应用程序。
需要考虑两个网络性能方面:延迟和吞吐量。您需要同时考虑这两个方面。
例如,用户通常会耐心等待搜索查询(在一定程度上)。他们会不是在浏览网站时,要耐心等待每个页面加载。虽然从用户的角度来看,这两者都被视为延迟,但第一个例子可能由数据库和 Web 服务器之间的网络吞吐量决定,而第二个例子则由网络延迟决定。
还是不行!只有测试才能证明。
答案3
您正在执行哪些类型的查询?
如果您正在进行复杂查询,而 CPU 速度是您的限制因素,那么与数据库的连接速度可能低于 10mb/s,高延迟就不会那么明显。(但这些要么是非常复杂的查询,要么是在性能非常低下的机器上)
然而,你也许可以加快速度通过在 Web 服务器机器上进行缓存,或者在 Web 服务器本地设置一个小型 mysql 复制服务器,用于保存任何访问频繁的数据的副本。
虽然将整个数据库放置在远程位置会对性能产生负面影响,但从灾难恢复的角度来看,将其放置在两个位置肯定具有有益的影响。
答案4
从数据库服务器请求的平均数据大小是多少,两者之间的可用带宽是多少,流量有多大?应该很容易就能确定是否存在严重的瓶颈。