我们正在开发我们的web应用程序,并且一直致力于减少我们的负载时间。当我们开始开发应用程序时,我们与一家知名的托管提供商签约,该公司在云上提供“专用解决方案”。因此,我们为我们的web应用程序提供了一台专用服务器,为我们的数据库提供了一台专用服务器。这两台服务器都是使用相同数量的RAM、相同的CPU和SSD驱动器来设置的。即使在我们的基础设施上投入时间和资金,我们也注意到了8-10秒的负载次数。
另一家托管公司告诉我们,我们应该缩小规模,把所有东西放到一台服务器上(而不是把它分开)。他们提到,将服务器分开将导致更高的负载时间,因为网络延迟,并指出PHP将更快地通过套接字与SQL通信,而不是通过网络。我知道这是真的,但我没想到我们会得到这样的结果。在将所有内容移动到原来的应用服务器之后,我们的负载时间从8-10下降到3-4秒!
问题是,我们现在正在研究一个新的托管提供商,并建议我们利用一个集群,其中包含负载均衡器、数据库服务器、应用服务器和从那里开始的扩展。需要关注的是,如果我们再次分离应用程序和数据库服务器,我们将回到起点。
从我所读到的一切来看,似乎总是建议将这些服务器分开,而不是分组在一起。在正确设置时,这样做是否会提高性能,还是仅仅是为了长期的可伸缩性?
我很感谢你的帮助!
发布于 2014-02-11 22:45:15
你的问题很广泛,所以我只提几个方面:
发布于 2014-02-11 22:59:30
我不知道您在做什么来获得8-10秒的加载时间(假设您将“加载时间”定义为“HTTP请求之间的时间,页面被构建并发送到浏览器之间的时间”)。
你不应该让你的CPU 100%的使用一个web服务器和一个数据库,即使你以某种方式管理它,把web服务器和数据库放在一个服务器上也于事无补。
此外,在同一硬件上移动两个服务器不会减轻DB服务器上的任何类型的重载。
所以这个问题几乎与
也许这是我目前无法想象的另一件事,因为当你在更多的CPU上分发它时,一个典型的web应用程序会变得非常缓慢,只要这些CPU之间有一个快速的网络连接。
只要您不找出在不同主机上引起问题的原因/原因,您可能再次遇到相同的问题,或者您可能不会。
去年我遇到了第一个问题--我的一个客户和第三方签约为他们开发了一些软件。演示笔记本电脑上的一个典型操作大约需要4个小时才能完成。当我的客户将软件转移到预期的生产环境(大型应用程序服务器,大型数据库集群)时,同样的事情花费了16个多小时。通过筛选日志并进行网络跟踪,我们发现应用程序在dev系统上每秒钟进行大约15.000次选择,应用服务器和数据库之间的0.3ms延迟将这一延迟限制在每秒钟3000次以上。devs被告知要改变访问数据库的方式(对两个表进行连接,而不是对一个表进行选择,然后对每个结果进行一行选择),这导致整个操作所需时间不到30分钟。
关键是,你遇到的这种麻烦是不寻常的,可能与你的软件以一种不寻常的方式行为有关,你真的应该调查一下这里发生了什么,以及为什么2台机器的设置要慢得多。
分裂成2台机器通常会提高性能,因为您有更多的CPU来完成这项工作。它还增加了可维护性。您的数据库可能需要一个特殊的内核参数或补丁级别才能正常工作;您的web服务器可能有冲突的需求。而且,无论何时进行升级,都很容易升级这两个系统中的一个而不触及另一个系统。
https://serverfault.com/questions/574853
复制相似问题