我想知道按照计划重新启动服务器是否对性能有好处。
假设我们想每 2 晚凌晨 2:00 重启服务器。
这里的服务器是Windows Server 2008 R2
。主要,SQL Server 和 IIS 7.5(运行近 15 个应用程序)在该服务器下运行。服务器有 4GB 内存。
答案1
虽然我同意重启机器本身没有什么问题,但根据您所说的 SQL Server Agent 正在停止的评论,我建议进行一些额外的根本原因分析。服务通常不会就此停止,而且根据我的经验,SQL Server Agent 服务通常不会这样运行。
我认为,除了重新启动之外,你最好检查事件日志并运行一个可以进行分析的长期性能计数器日志日志性能分析(PAL)看看它是否“发现”了什么错误。如果没有其他办法,您应该尝试将与 SQL Agent 停止相关的事件与其他因素关联起来。
答案2
如果您希望重新启动计算机来提高性能,则可能意味着您最终会遇到内存管理问题。
缓存很好
如果有的话,重新启动服务器会损害性能(当然还有正常运行时间)理想环境. 计算性能的基础之一是利用缓存(将数据保存在快速内存中)。每次重新启动时,缓存都会被清除。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 服务器的属性中对此进行限制。如果您不限制内存,并且还在机器上运行 IIS,那么这些可能会开始争夺内存,从而降低性能。这篇优秀的文章对此进行了详细介绍:系统管理员的 Microsoft SQL 内存指南。
平衡
由于 IIS 和 SQL 都安装在同一个机器上,因此您必须平衡它们的内存使用情况。如果不这样做,您可能会将可能再次使用的内存交换到磁盘上 — — 这是一个糟糕的情况(应该有用于交换活动的性能计数器)。通过使用 IIS 回收设置和 SQL 内存限制,您应该能够使此系统稳定。要平衡这一点,您可能需要超过 4GB 的内存。此外,如果可以的话,我强烈建议将 SQL 服务器放在专用机器上 — — 这将使性能大大提高,并大大简化事情。
答案3
我并不提倡按计划重启服务器,尤其是将其作为解决某些潜在问题的手段。如果您需要重启此服务器来解决性能问题,那么更好的做法是找到问题的原因并解决它。定期重启服务器只会掩盖潜在问题。
答案4
如果您确实想按计划重新启动服务器(由于上述内存泄漏或更新或任何其他原因) - 为什么不考虑集群解决方案? 并行安装另一台服务器,将它们连接到负载平衡器(即使是一个简单的负载平衡器也可以),您可以根据需要多次重新启动它们,而不会丢失服务正常运行时间或担心服务器根本无法启动而您将无法使用。