user12077 Asked: 2009-07-09 06:38:39 +0800 CST2009-07-09 06:38:39 +0800 CST 2009-07-09 06:38:39 +0800 CST Web 服务器和数据库服务器位于完全不同的位置 772 在具有不同主机的完全不同位置拥有 Web 服务器 (apache/php) 和数据库服务器 (mysql) 对性能有何影响。 编辑:它是一个数据库密集型 Web 应用程序,因此每个页面都会多次访问数据库。数据库通常是 Web 应用程序的瓶颈,只是想知道与数据库交互的典型速度相比,网络速度是否显着。 linux mysql php 5 个回答 Voted Best Answer EasyEcho 2009-07-09T06:43:05+08:002009-07-09T06:43:05+08:00 这在很大程度上取决于两个位置之间的连接速度。有些公司在他们的数据中心之间有高速骨干网,但从它的声音来看,你正在寻找两家不同的公司。由于连接是通过互联网和任何一家公司控制之外的线路进行的,因此这个问题没有可靠的答案。 如果可能的话,我会避免它。如果您真的觉得这是最好的方法,请查看 memcache 之类的东西以减轻从数据库中的查询。 kmarsh 2009-07-09T10:42:55+08:002009-07-09T10:42:55+08:00 在具有不同主机的完全不同位置拥有 Web 服务器 (apache/php) 和数据库服务器 (mysql) 对性能有何影响。 是的,有性能影响,它们都是负面的。这样的系统可以工作,特别是如果两个系统通过基于正常运行时间和性能的服务级别协议的 VPN 连接。如果您只是通过“云”,您将没有网络性能的一致性,如果连接或性能下降,您将不会感到窒息。 只是想知道与数据库交互的典型速度相比,网络速度是否显着。 这完全取决于您的网络速度以及您的数据库和应用程序。 有两个网络性能方面需要考虑——延迟和吞吐量。你需要考虑两者。 例如,用户在等待搜索查询时通常会耐心(在一定程度上)。他们在浏览网站时不会耐心等待每个页面的加载。虽然从用户的角度来看两者都被视为延迟,但第一个示例可能由数据库和 Web 服务器之间的网络吞吐量加权,而第二个示例则由网络延迟加权。 或不!只有测试会告诉我们。 Brent 2009-07-09T14:51:01+08:002009-07-09T14:51:01+08:00 你在做什么类型的查询? 如果您正在执行复杂的查询,其中 CPU 的速度是您的限制因素,那么与数据库的连接速度可能低于 10mb/s 并且高延迟不会那么明显。(但这些查询要么是非常复杂的查询,要么是在动力不足的机器上) 但是,您可以通过在网络服务器机器上进行缓存来加快速度,或者通过在网络服务器本地设置一个小型 mysql 复制服务器来保存任何频繁访问的数据的副本。 虽然将整个数据库远程放置会对您的性能产生负面影响,但从灾难恢复的角度来看,将其放在 2 个位置肯定会产生有益的影响。 Troggy 2009-07-09T06:50:40+08:002009-07-09T06:50:40+08:00 这需要更多细节。如果它们位于不同的位置,可能会有很多连接选项。通信速度较慢,连接速度较慢,反之亦然。这个问题还有更多吗?两台服务器之间进行了多少主动通信? 编辑:您的连接选项是什么?你期望有多少用户?您的“数据库密集型”可能同时适用于少数几个用户,但如果您的站点有很多用户,那么您将拥有一个缓慢的站点。如果这是您设置它的唯一方法,您将希望在该站点上进行大量负载测试。 MDMarra 2009-07-09T07:57:46+08:002009-07-09T07:57:46+08:00 从数据库服务器请求的平均数据大小是多少,两者之间的可用带宽是多少,流量有多大?应该很容易弄清楚是否会出现停止表演的瓶颈。
这在很大程度上取决于两个位置之间的连接速度。有些公司在他们的数据中心之间有高速骨干网,但从它的声音来看,你正在寻找两家不同的公司。由于连接是通过互联网和任何一家公司控制之外的线路进行的,因此这个问题没有可靠的答案。
如果可能的话,我会避免它。如果您真的觉得这是最好的方法,请查看 memcache 之类的东西以减轻从数据库中的查询。
在具有不同主机的完全不同位置拥有 Web 服务器 (apache/php) 和数据库服务器 (mysql) 对性能有何影响。
是的,有性能影响,它们都是负面的。这样的系统可以工作,特别是如果两个系统通过基于正常运行时间和性能的服务级别协议的 VPN 连接。如果您只是通过“云”,您将没有网络性能的一致性,如果连接或性能下降,您将不会感到窒息。
只是想知道与数据库交互的典型速度相比,网络速度是否显着。
这完全取决于您的网络速度以及您的数据库和应用程序。
有两个网络性能方面需要考虑——延迟和吞吐量。你需要考虑两者。
例如,用户在等待搜索查询时通常会耐心(在一定程度上)。他们在浏览网站时不会耐心等待每个页面的加载。虽然从用户的角度来看两者都被视为延迟,但第一个示例可能由数据库和 Web 服务器之间的网络吞吐量加权,而第二个示例则由网络延迟加权。
或不!只有测试会告诉我们。
你在做什么类型的查询?
如果您正在执行复杂的查询,其中 CPU 的速度是您的限制因素,那么与数据库的连接速度可能低于 10mb/s 并且高延迟不会那么明显。(但这些查询要么是非常复杂的查询,要么是在动力不足的机器上)
但是,您可以通过在网络服务器机器上进行缓存来加快速度,或者通过在网络服务器本地设置一个小型 mysql 复制服务器来保存任何频繁访问的数据的副本。
虽然将整个数据库远程放置会对您的性能产生负面影响,但从灾难恢复的角度来看,将其放在 2 个位置肯定会产生有益的影响。
这需要更多细节。如果它们位于不同的位置,可能会有很多连接选项。通信速度较慢,连接速度较慢,反之亦然。这个问题还有更多吗?两台服务器之间进行了多少主动通信?
编辑:您的连接选项是什么?你期望有多少用户?您的“数据库密集型”可能同时适用于少数几个用户,但如果您的站点有很多用户,那么您将拥有一个缓慢的站点。如果这是您设置它的唯一方法,您将希望在该站点上进行大量负载测试。
从数据库服务器请求的平均数据大小是多少,两者之间的可用带宽是多少,流量有多大?应该很容易弄清楚是否会出现停止表演的瓶颈。