按计划重新启动服务器是否是提高性能的好主意?

tug*_*erk 14 windows-server-2008 performance windows-server-2008-r2

我想知道按计划重新启动服务器是否是提高性能的好主意。

假设我们想在每 2 晚的凌晨 02:00 重新启动服务器。

这里的服务器是Windows Server 2008 R2. 主要是 SQL Server 和 IIS 7.5(近 15 个应用程序正在运行)在此服务器下运行。服务器有 4GB 内存。

Kyl*_*ndt 38

如果您希望重新启动计算机以提高性能,这可能意味着您最终会遇到内存管理问题。

缓存很好

如果有的话,在更理想的环境中重新启动服务器会损害性能(当然还有正常运行时间)。计算性能的基础之一是利用缓存(在快速内存中提供数据)。每次重新启动时,都会破坏缓存。SQL Server 和 IIS 都是如此。尽管您可能没有理想的环境,但以下内容应该可以帮助您找到比按计划重新启动服务器更好的选择。

IIS内存泄漏?

现在您提到这是 IIS 7.5。虽然我觉得很郁闷,但在 IIS 7.5 上运行的许多 Web 应用程序都存在内存泄漏,以至于 IIS 中的默认设置是每 X 分钟重新启动 APP,如果 APP 池空闲则将其关闭。理想的是修复内存泄漏——但如果你不能,你可以调整这些设置,包括内存限制和计时器。您可以使用 perfmon 来确定哪个 w3wp 进程正在使用内存。这有点痛苦,但您可以使用%systemroot%\system32\inetsrv\APPCMD list wps.

SQL 内存

回到缓存,SQL 将占用它所能占用的内存。您可以在 SQL Server 的属性中对此进行限制。如果您不限制内存并且您还在机器上运行 IIS,那么它们可能会开始争夺内存杀戮性能。这篇出色的文章详细介绍了这一点:系统管理员的 Microsoft SQL 内存指南

平衡

由于您在同一台机器上同时安装了 IIS 和 SQL,因此您必须平衡它们的内存使用情况。如果不这样做,您可能会将可能再次使用的内存换出到磁盘——这是一个糟糕的地方(应该有用于交换活动的性能计数器)。通过使用 IIS 回收设置和 SQL 内存限制,您应该能够使该系统稳定。为了平衡这一点,您可能需要超过 4GB 的内存。此外,如果这是一个选项,我强烈建议将 SQL 服务器放在专用机器上——这将使性能更好,并大大简化事情。


Eva*_*son 32

虽然我同意重新启动机器本身没有任何问题,但根据您对 SQL Server 代理停止的评论,我建议进行一些额外的根本原因分析。服务通常不会停止,而且根据我的经验,SQL Server 代理服务通常不会那样做。

我认为除了重新启动之外,您还可以检查事件日志并运行长期性能计数器日志,您可以使用日志性能分析(PAL) 进行分析,以查看它是否“看到”了任何错误。如果不出意外,您应该尝试将与 SQL 代理停止相关的事件与其他因素相关联。

  • *“添加”*?在第 2 行解析错误。 (2认同)

joe*_*rty 12

我不支持按计划重新启动服务器,尤其不是作为解决某些潜在问题的一种方式。如果您需要重新启动此服务器以解决性能问题,那么更好的做法是找到问题的原因并解决它。定期重新启动服务器只会混淆潜在的问题。


Cho*_*er3 5

如果您有严重的内存泄漏,那么当然,为什么不 - 否则每月重新启动一次更新。

  • 如果它正在运行 SQL Server,那在意料之中。SQL Server 将尝试(您应该让它)使用它可以使用的所有内存。 (6认同)
  • 这并不意味着您有内存泄漏。内存是可以使用的。重新启动以修复内存泄漏是一种非常实用的解决方法,但从长远来看,更好的解决方案是找到并修复导致它们的故障。 (4认同)
  • 如果是内存,你应该看到交换在它“死亡”之前受到重创,我想。内存将始终尽可能多地用于缓存等。您可能应该首先使用工具来分析您的数据库使用情况。如果您正在运行 15 个应用程序,并且内存紧张(15 个应用程序 + 4 gig 中的数据库?这些东西有多大?)您可能已经在考虑将数据库组件从 Web 服务器拆分到专用服务器。 (2认同)