我希望有人能帮帮忙。我们有一台具有16GB RAM 的Windows Server 2008 R2计算机,该计算机不断消耗所有可用内存。在没有任务管理器或资源监视器显示使用300MB以上的内存中的任何程序......但在服务器上的内存使用量是15.7GB。
唯一运行的是SQL Server 2008和IIS7.5(带有ASP.Net)。
注意:重新启动后的RAM使用率开始很低,然后逐渐上升。大约一周后,在这种情况下我们不断发现自己。
我怎么能发现正在吃的东西让我们记忆犹新?:(
我希望有人能帮帮忙。我们有一台具有16GB RAM 的Windows Server 2008 R2计算机,该计算机不断消耗所有可用内存。在没有任务管理器或资源监视器显示使用300MB以上的内存中的任何程序......但在服务器上的内存使用量是15.7GB。
唯一运行的是SQL Server 2008和IIS7.5(带有ASP.Net)。
注意:重新启动后的RAM使用率开始很低,然后逐渐上升。大约一周后,在这种情况下我们不断发现自己。
我怎么能发现正在吃的东西让我们记忆犹新?:(
Answers:
这是一台64位服务器-您是否启用了内存本地策略中的锁定页面?SQL可能会消耗剩余的内存如果您查看perfmon计数器,则会看到内存分配
您也可以在SQL中查看计数器
SELECT
object_name
,Counter_name
,cntr_value
,ROUND(( cntr_value * 8192.0 ) / 1048576, 0) AS cntr_value_MB
FROM
sys.dm_os_performance_counters
WHERE
object_Name LIKE '%Buffer Manager%'
AND RTRIM(counter_name) IN ( 'Free pages', 'Total pages',
'Database pages' )
UNION SELECT
object_name
,Counter_name
,cntr_value
,ROUND(( cntr_value / 1024 ), 0) AS cntr_value_MB
FROM
sys.dm_os_performance_counters
WHERE
counter_name IN ( 'Target Server Memory (KB)',
'Total Server Memory (KB)' )
快速测试:重新启动SQL Server。
另一个快速测试:重新启动IIS。
您将确定其中一个是罪魁祸首,或者是否必须寻找其他地方。
您实际上遇到任何与内存相关的问题吗?
请问内存使用量不断变得更高比实际安装的内存,或者它只是填补了,呆在那里?
如果内存快满了,但是您没有遇到任何问题,那么它只是在缓存中完成工作;如果您确实需要内存,那么它将自动实现。
如果内存使用量超过了物理限制,并且服务器停止运行,则说明您遇到了一些内存泄漏,请务必对其进行调试。
关于“缓存”主题的一些有趣的文章:
http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory -shell-game.aspx
http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx
如前所述,第一件事是对其进行修补,看看是否可以解决问题。
其次,如果这不起作用,请使用Process Explorer更好地了解您的内存使用情况。转到“查看”菜单,然后选择“列”,“进程内存”并检查“专用字节”,“虚拟大小”和“工作集大小”选项。看看这是否指示应归咎于此。
然后,一种极端的方法是尝试停止服务。例如,如果您将应用程序池和Web花园配置错误(其中太多),则IIS可能是总内存不足的地方,因此这很可能成为问题。
祝好运!