目前,我遇到了 SaaS 应用程序的一些数据库性能问题。白天,RESOURCE_SEMAPHORE 等待统计数据会猛增 30 到 60 秒,持续 1 到 2 分钟。在此期间,我还从我们的服务器收到一封或多封严重性为 17 的警报邮件,其中包含警告“资源池‘内部’中没有足够的系统内存来运行此查询。”
我们已经解决了具有大量内存授予的效率最低的查询(1.5 到 2.5 GB 授予,但使用率仅为 5% 或更少)。为了精确定位这些查询,我们使用了 Brent Ozar 的 sp_BlitzCache。不幸的是,这些更改后仍然出现性能问题。
请注意,此时我们有一个代理作业每 5 分钟运行一次 DBCC FREEPROCCACHE。这样做会使问题更加分散。将此作业更改为每半小时运行一次似乎会使问题变得更糟。当然,运行此作业还有其他影响,例如更高的编译/秒和更高的 CPU 利用率,但目前这是一个“两全其美”的解决方案。
恐怕内存压力问题是由于服务器配置的 RAM 内存不足造成的?这个假设是正确的还是这些问题是由其他原因造成的?
服务器统计
- SQL Server 2022 (16.0.4085.2)
- 6 个逻辑处理器(最大 DOP = 4)
- 16 GB 总 RAM,配置为 SQL Server 的最大服务器内存为 14 GB,操作系统的最大服务器内存为 2 GB
- 共有1381个数据库
- 数据库总大小:302GB