在Web服务器上运行SQL Server

时间:2020-03-06 14:31:37  来源:igfitidea点击:

在网络服务器上运行SQL Server是好事,坏事还是无动于衷?

我正在使用Server 2008和SQL Server 2005,但是我认为这对这个问题无关紧要。

解决方案

这实际上取决于网络服务器和sql服务器正在执行的工作量。

没有更多信息,我怀疑我们将获得任何有用的答案。

这将取决于服务器的预期负载。对于小型站点,这完全没有问题(如果配置正确)。对于大型站点,我们可能需要考虑将负载分布在不同的服务器上:Web服务器,文件服务器,数据库服务器等。

对于小型网站,这没有什么区别。
但是,随着负载的增长,扩展的幅度确实非常大,并且比我们想象的要快:

  • 数据库服务器建立在它们"拥有"服务器的前提下。他们以内存换取速度,并轻松使用所有可用RAM进行内部缓存。
  • 一旦资源变得稀缺,分析就变得非常困难-显然IIS和SQL都在遭受苦难,而瓶颈在哪里却不那么清楚。 IIS需要CPU,SQL Server需要RAM或者CPU等
  • 无论我们在代码中放入多少层,它们都在同一CPU上运行,因此,单层应用程序在这种情况下会更好地运行-开销更少-但不会扩展。
  • 安全性真的很差,通常我们将SQL隔离在防火墙后面!

如果我们负担得起的话,最好花一些钱买第二台服务器,也许使用PostgreSQL。由于许可成本,一台IIS服务器和一台PostgreSQL的成本大约是IIS + SQL Server上的成本...

我想说最好是在同一台服务器上运行它们,直到出现问题为止。这样,我们可以节省一些金钱和时间。一旦该站点成功并需要进行一些体系结构更改,它应该已经为自己付出了代价。

记得备份:)

如果Web服务器是可公开访问的,那么从安全角度来看,这是一个非常糟糕的主意。

尽管从路由,防火墙,端口,身份验证等角度来看,这使许多事情变得更加困难,但分离还是不错的。当数据库服务器在Web服务器上运行时,如果Web服务器受到威胁,那么sql服务器也将受到威胁。

当我们将它们放在单独的盒子中时,我们将杆抬高了一点。

为了保护Web服务器和数据库服务器,还有许多工作要做,但是为什么要使其变得比需要的容易呢?

较大的商店可能不会认为这是最佳做法...但是,如果我们每秒处理的请求不超过数百个,则可以将它们都放在一个盒子中。

实际上,对于小型应用程序,我们将在后端看到更好的性能,因为数据不必经过网络。一切都与规模有关。

请记住,数据库服务器会消耗内存。这是一门硬汉的重要教训:如果我们决定在与Web服务器相同的计算机上运行SQL Server 2005(这是我们在问题中提到的设置),请确保我们进入Sql Server Management Studio,并且做这个:

  • 右键单击服务器实例,然后单击属性
  • 从左侧列表中选择"内存"
  • 将"最大服务器内存"更改为服务器可以承受的容量。

如果不这样做,SQL Server最终将占用服务器的所有RAM,并无限期地挂在其上。这将导致服务器或者多或者少地飞溅而死。如果我们不知道这一点,那么进行故障排除可能会非常令人沮丧。

我已经做了很多次了。如果我们拥有大型公司的基础结构并且规模不大,那么我们就不会做这件事,但是对于很多事情来说都很好。

我已经一遍又一遍地看到这个问题。正确的答案是将SQL Server放在一台计算机上,而将IIS(Web服务器)放在另一台计算机上。钱将投入到SQL Server计算机中,因为必须购买正确的驱动器系统和RAM才能支持高效的服务器,但是Web服务器可以是一台精简的驱动器,而只需镜像驱动器集,就可以降低成本。