我如何才能找到正在使用服务器内存的东西?

我如何才能找到正在使用服务器内存的东西?

我正在处理 32 位 Windows 2003 服务器,它曾经是一个物理机箱,但现在在 vmware 中虚拟化。有两个 SQL Server 实例正在运行。一个是 2000 Standard,另一个是 2008 R2 Express。该机器据称分配了 3GB 的 RAM,但 SQL Server 实例似乎使用的 RAM 非常少。如果我将所有进程合并起来,我会得到大约 500MB 的已用 RAM。但看起来可用的物理内存也不多。所以问题是:我如何才能找到正在使用 RAM 的内容?

在此处输入图片描述 在此处输入图片描述

答案1

对于 SQL 2008 实例,尝试运行此代码:

-- server wide info
select 
-- sp_configure
    (select value_in_use from sys.configurations where configuration_id = 1543) as 'Min Mem',
    (select value_in_use from sys.configurations where configuration_id = 1544) as 'Max Mem',
-- buffer pool & plan cache
    (select cast(count(*) * 8.0 / 1024.0 as numeric(10,2)) from sys.dm_os_buffer_descriptors) as 'Buffer Pool MB', 
    (select cast(sum(cast(size_in_bytes as bigint)) / 1024.0 / 1024.0 as numeric(10,2)) from sys.dm_exec_cached_plans) as 'Plan Cache MB',
-- perfmon
    (select cntr_value from sys.dm_os_performance_counters where object_name like '%Buffer Manager%' and counter_name = 'Page Life Expectancy') as 'PLE',
    (select cntr_value from sys.dm_os_performance_counters where object_name like '%Memory Manager%' and counter_name = 'Memory Grants Pending') as 'MGP'
go

这将告诉你你的最大限度分钟设置SQL Server 内存它会告诉你你的缓冲池计划缓存页面预期寿命是数据在内存中保留的时间,时间越长越好。内存授权待定表示有多少查询因等待内存而卡住,越低越好。

任务管理器,单击“进程”选项卡,并选中“显示所有用户的进程”复选框。然后单击“内存”列以按内存使用情况排序。查看是否有其他程序占用了您的内存。

下载系统内部工具并运行进程探索器进程管理器。这将提供比任务管理器更详细的信息。

由于它是虚拟机,因此虚拟机管理员并检查以下内容:预订限制, 和乘热气球。您希望 Reservation 等于您认为已为服务器设置的内存。您希望 Limit 和 Ballooning 为零。

祝您狩猎愉快!

相关内容