在Web服务器上运行SQL Server

Lan*_*her 4 sql-server optimization webserver

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

我正在使用Server 2008和SQL Server 2005,但我不认为这个问题很重要.

Skl*_*vvz 13

对于小型网站,它没有什么区别.然而,随着负载的增长,这种情况会非常严重,并且比您想象的更快:

  • 数据库服务器建立在他们"拥有"服务器的前提下.他们交换内存以提高速度,并且他们可以轻松地使用所有可用RAM进行内部缓存
  • 一旦资源开始稀缺,分析变得非常困难 - 很明显,IIS和SQL都在遭受痛苦,而不是瓶颈所在.IIS需要CPU,SQL Server需要RAM或CPU等
  • 无论你在代码中放了多少层,它都运行在同一个CPU上,因此单个分层应用程序在这种情况下运行得更好 - 开销更少 - 但是它不会扩展.
  • 安全性非常糟糕,通常您将SQL隔离在防火墙后面!

如果你能负担得起,最好是花几块钱买第二台服务器,也许是使用PostgreSQL.由于许可成本,一个IIS服务器和一个PostgreSQL的成本与IIS + SQL Server相当.


Bri*_*Kay 6

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

实际上,对于小型应用程序,您会在后端看到更好的性能,因为数据无需通过网络传输.一切都与规模有关.

请记住,数据库服务器会占用内存.这是来自困难学校的一个重要教训:如果您决定在与Web服务器相同的计算机上运行SQL Server 2005(这是您在问题中提到的设置),请确保您进入Sql Server Management Studio并且这样做:

  1. 右键单击服务器实例,然后单击属性
  2. 从左侧列表中选择"记忆"
  3. 将"最大服务器内存"更改为服务器可以维持的内容.

如果你不这样做,SQL Server最终将占用你所有服务器的RAM并无限期地挂起它.这将导致您的服务器或多或少地溅射并死亡.如果你不知道这一点,那么排除故障可能会非常令人沮丧.

我这样做了好几次.如果你拥有一家大公司的基础设施并且它不能扩展,那么你不会做的事情,但它适用于很多事情.