收到告警sqlserver服务器内存使用率过高,登录检查发现Reporting Services 占用内存超过13G,检查DB中正在执行的sql并没有发现ReportServer DB相关sql,业务方也说没有查到Reporting Services当前在执行什么。重启Reporting Services服务后故障恢复,查了下网上文章相关问题的分析和调整方法。
一、 查询占用内存最高的REPORTING SERVICES信息
Select Top 10 *
From ReportServer.dbo.ExecutionLog2 el
Outer Apply (
Select Sum(
Coalesce(c.value('Pagination[1]', 'int'), 0) +
Coalesce(c.value('Rendering[1]', 'int'), 0) +
Coalesce(c.value('Processing[1]', 'int'), 0)) / 1024.0 As MemoryUsageMB
From ReportServer.dbo.ExecutionLog2 el2
Cross Apply
el2.AdditionalInfo.nodes('AdditionalInfo/EstimatedMemoryUsageKB') As b(c)
Where el.TimeStart Between el2.TimeStart and el2.TimeEnd
Or el.TimeEnd Between el2.TimeStart And el2.TimeEnd
) a
Order By MemoryUsageMB Desc;
二、 限制REPORTING SERVICES最大内存在RSReportServer.config配置文件在可以限制Reporting Services最大内存,文件位置在 C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServerMSRS13.MSSQLSERVER目录根据实际sqlserver版本而定。
备份然后编辑文件,搜索找到以下部分:MemoryThreshold 添加 <WorkingSetMaximum>1000000</WorkingSetMaximum>(1000000即1G),重启Reporting Services服务
|