4

在您的网络服务器上运行 SQL Server 是好、坏还是无关紧要?

我使用的是 Server 2008 和 SQL Server 2005,但我认为这对这个问题并不重要。

4

7 回答 7

13

对于小型网站,这并没有什么区别。但是,随着负载的增加,它的扩展性真的很差,而且比你想象的要快:

  • 数据库服务器是在它们“拥有”服务器的前提下构建的。他们用内存换取速度,并且很容易将所有可用的 RAM 用于内部缓存。
  • 一旦资源开始变得稀缺,分析就变得非常困难——很明显 IIS 和 SQL 都在受苦,不太清楚瓶颈在哪里。IIS 需要 CPU,SQL Server 需要 RAM 或 CPU 等
  • 无论您在代码中放置多少层,它们都在同一个 CPU 上运行,因此单层应用程序在这种情况下会运行得更好——开销更少——但它不会扩展。
  • 安全性真的很差,通常你将 SQL 隔离在防火墙后面!

如果你能负担得起,花几块钱买第二台服务器可能会更好,也许使用 PostgreSQL。由于许可成本,一台 IIS 服务器和一台 PostgreSQL 的成本与 IIS + SQL Server 的成本差不多……

于 2008-09-22T07:13:23.743 回答
6

较大的商店可能不会认为这是最佳实践……但是,如果您不处理每秒数百个请求,则可以将它们放在一个盒子上。

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

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

  1. 右键单击服务器实例,然后单击属性
  2. 从左侧列表中选择“内存”
  3. 将“最大服务器内存”更改为您的服务器可以承受的值。

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

我已经这样做了好几次了。如果您拥有大型公司的基础设施并且无法扩展,那么您不会这样做,但这对很多事情都很好。

于 2008-09-23T14:29:20.550 回答
3

这真的取决于你的网络服务器和你的 sql 服务器正在做多少工作。

如果没有更多信息,我怀疑你会得到任何有用的答案。

于 2008-09-22T07:03:20.177 回答
3

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

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

当您将它们放在单独的盒子上时,您已经提高了一点。

要保护您的 Web 服务器和数据库服务器,还有很多工作要做,但为什么要让它变得比需要的更容易呢?

于 2008-09-22T14:52:25.760 回答
2

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

记得备份:)

于 2008-09-22T08:44:57.733 回答
1

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

于 2008-09-22T07:04:00.113 回答
0

我一遍又一遍地看到这个问题。正确的答案是将 SQL Server 放在一台机器上,将 IIS(Web 服务器)放在另一台机器上。您的钱将用于 SQL Server 机器,因为必须购买正确的驱动器系统和 RAM 以支持高效的服务器,但 Web 服务器可以是一个大大缩小且价格更便宜的机器,只需一个镜像驱动器集。

于 2010-11-06T16:50:32.707 回答