sql-server-2008 – 如何在SQL Server 2008上找到内存压力故障的
我一直在进行性能监视的服务器之一开始从Resource-Exhaustion-Detector中抛出以下警告:
该服务器是运行MSSQL 2008 R2的Windows Server 2008,具有16GB的RAM和24个处理器.它运行SQL,以及访问SQL for Data的Web服务. 我在报价中包含的数字来自事件查看器的详细信息部分.我无法找出根本原因.我已经知道SQL需要大量的内存来运行,当时它使用了大量的内存,但我的上限也设置为14000MB. 除了Resource-Exhaustion-Detector警告之外,SQL开始出现Out of Memory错误. 找到根本原因的最佳方法是什么?我没有在日志中看到任何与众不同的东西.经过几个小时的这个错误反复重复,内存终于耗尽,服务开始失败,直到服务必须重新启动. 当有压力时,SQL是不是足够智能放弃它的一些内存?页面文件(虚拟内存)为20GB,SQL仅使用16GB的物理内存.什么填补了虚拟内存的其余部分? SQL实际上是否正在使用所有页面文件? 我应该寻找内存泄漏吗?日志文件增长? 通常当存在内存压力时,我们从未达到服务器崩溃的程度.通常只是在压力消失之前运行缓慢. 有没有办法有效地阻止这个问题的发生? 解决方法要正确诊断这一点,我们需要更多信息.SQL服务器就像任何其他Windows进程一样;它的虚拟地址空间可能比物理RAM大得多.它甚至可以比RAM页面文件大,如果它的任何部分使用内存映射文件. SQL Server中的调整参数是一种告诉它永远不要使用超过’x’MB的方法.您必须查看包装盒上所有其他服务的峰值提交费用,从物理RAM数字中减去此值,然后将剩余部分提供给SQL Server.据我所知,内存上限仅适用于RDBMS,而不适用于相关SQL服务器服务的动物.我在这里错了. 因此,我们需要更多剩余流程的数据.例如,你有一个IIS工作进程消耗273MB;只有一个工人流程吗?您是否安装了防病毒软件或备份软件? 您可以使用WSRM来分析正在发生的事情,然后考虑应用内存上限.或者,这是我的建议,安装更多的RAM. 要获得内存运行位置的图形视图,请了解Microsoft SysInternals的RAMMap实用程序. (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |