2014-04-08 63 views
3

我想知道如果应用程序负载很重的数据库查询该怎么办。单独的应用程序服务器和数据库服务器

我正在使用Microsoft SQL Server 2012并且当前(开发时间)我在与ASP.NET应用程序相同的机器上运行SQL Server。一切安好。连接是通过回送接口(localhost)完成的,所以根本没有速度影响。没有物理网络。

如果由于SQL Server处于生产模式导致RAM使用率非常高,会发生什么情况?将应用程序与数据库机器分开会更好吗?

但是如果是这样,连接必须通过一个真实的网络接口来完成,而不是一个伪回送接口。在这种情况下是否有速度影响?由于引入了物理网络,是否会导致延迟?

通常我会租用托管服务提供商的2台根服务器。一个用于应用程序,一个用于具有巨大内存的数据库。他们如何相互沟通?两者是否都有本地IP地址来实现快速互连?来自同一提供商的两台机器。

在此先感谢

+2

好问题。如果迁移到[服务器故障](http://serverfault.com/),我可能会收到优秀的答案。 – Zane

回答

2

如果您有两台服务器:数据库和应用服务器,那么你应该将它们向上,以便在数据库服务器2个的网络连接(同为应用服务器)。其中一个连接是专用网络,另一个连接是公共的。应用程序服务器应该通过专用网络与数据库通信。这是一个典型的实现,它会很快。在应用程序的配置文件中,您可以设置连接字符串以指向数据库服务器的专用IP。应该锁定数据库机器上的公共网络连接,以便只打开远程桌面,ping和ssh端口。在应用程序服务器上,公共网络应该打开相同的端口,并附加端口80,以便可以提供http请求。

1

hotSauce.Open的已经回答了你的大部分问题,但在任何情况下:

如果RAM使用率是非常高的,因为发生在生产模式下的SQL服务器 的是什么?

每当需要查询时,网站的性能就会下降。 例如,您可以尝试使用Memcached或Redis来减轻负载。应用程序本身可能还需要进行一些调整,以便最大化系统资源(例如:最小化请求数量,确保为所需的特定数据交换所有“select *”)。

将应用程序机器与 数据库机器分开会更好吗?

如前所述,在分离两者之前可以做几件事情。无论如何,如果你真的希望有高流量负载,那么在另一台服务器上运行应用程序肯定会有用(尽管更昂贵...)。如果它是否值得,那完全取决于你的要求。

+1

建立在哈尔的评论:重要的是要注意你_want_ sql server要使用内存。这使得sql server可以尽可能多地存储缓存,而不会造成操作系统匮乏。这使查询更快。它也会智能缓存。如果特定查询比其他查询更频繁,它将缓存需要处理的数据以便在内存中查询以提高性能。这最终是人们选择2服务器解决方案的原因。 – pwnyexpress

相关问题