You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SP2019本地部署数据库‘internal资源池内存不足’问题求助

解决SQL Server 'internal'资源池内存不足问题的步骤

1. 检查并调整Internal资源池的内存限制

SQL Server的internal资源池负责系统级操作,默认无硬内存限制,但配置异常会触发内存不足错误:

  • 执行查询查看当前配置:
    SELECT name, min_memory_percent, max_memory_percent, min_cpu_percent, max_cpu_percent
    FROM sys.resource_governor_resource_pools
    WHERE name = 'internal';
    
  • 若max_memory_percent设置过低,或min_memory_percent过高抢占其他池资源,执行以下语句调整(建议max_memory_percent设为90-95,确保internal池有足够内存预留):
    ALTER RESOURCE POOL internal
    WITH (max_memory_percent = 95);
    GO
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    GO
    

2. 验证SQL Server实例内存配置合理性

虽已分配120GB给SQL Server,仍需确认配置是否存在冲突:

  • 检查max server memory和min server memory设置:
    SELECT name, value, value_in_use, description
    FROM sys.configurations
    WHERE name IN ('max server memory (MB)', 'min server memory (MB)');
    
    注意:120GB对应122880MB,确保max server memory数值准确;min server memory建议设为总内存的10-20%(如12GB即12288MB),避免系统内存不足导致SQL无法动态调整。
  • 系统预留内存需充足:128GB总内存给SQL分配120GB后剩余8GB,若服务器还运行监控、备份等工具,建议将SQL的max server memory下调至112-116GB,给系统预留10-16GB内存。

3. 排查SharePoint默认服务的数据库负载

User Profiles等SharePoint默认服务初始化或同步时,可能触发大量查询导致内存压力突增:

  • 执行以下查询定位高内存消耗的查询,确认是否来自SharePoint默认服务:
    SELECT TOP 20
        SUBSTRING(qt.text, (qs.statement_start_offset/2)+1, 
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(qt.text)
            ELSE qs.statement_end_offset
         END - qs.statement_start_offset)/2)+1) AS query_text,
        qs.total_worker_time, qs.total_logical_reads, qs.total_logical_writes,
        qs.total_elapsed_time/1000000 AS total_elapsed_time_sec
    FROM sys.dm_exec_query_stats qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
    ORDER BY qs.total_logical_reads DESC;
    
  • 若确认是User Profiles服务的全量同步导致,可暂时暂停服务,待内存压力缓解后改为增量同步,再重新启动服务。

4. 分析已收集的内存与日志数据

结合已执行的sys.dm_os_process_memory和sp_readerrorlog,重点关注:

  • sys.dm_os_process_memory中的physical_memory_in_use_kb、locked_page_allocations_kb、page_fault_count指标,确认SQL实际使用内存是否接近max server memory,是否存在大量页面错误。
  • 错误日志中是否重复出现内存不足警告、低内存通知,以此判断是临时负载过高还是内存泄漏问题。

5. 启用锁定页内存选项(可选)

若服务器为物理机或已在Hypervisor中启用内存锁定,可开启此选项减少页面交换带来的内存压力:

  • 通过本地安全策略,给SQL Server服务账户分配锁定内存页权限(路径:本地策略>用户权限分配>锁定内存页)。
  • 启用SQL Server的locked pages in memory配置:
    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'locked pages in memory', 1;
    GO
    RECONFIGURE;
    GO
    
    注:此操作需重启SQL Server服务生效。

内容的提问来源于stack exchange,提问作者Mohammed Abed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 23:42:31