SQL Server由于内存转储导致服务器无法访问

时间:2019-07-02 22:49:39

标签: sql sql-server memory memory-leaks

我一直在运行SQL Server 2017 RTM版本作为生产数据库。

承载SQL Server的服务器具有8个CPU和32 GB内存。服务器是Windows Server 2019。

SQL Server具有以下内存限制:

“最小服务器内存”:0

“最大服务器内存”:28 GB

服务器有17个数据库,数据库总大小约为300 GB。

SQL Server在日常操作下可以正常工作,并且不会消耗整个内存。在工作时间内最多只能存储15-20 GB。午夜之后,我执行了索引维护工作(Ola hallangren),在此高负载操作期间,SQL Server占用了高达28GB的整个内存,并导致服务器无法访问(甚至无法使用RDP),因此我们需要从VM重新启动服务器控制台恢复正常。

这是我在SQL ErrorLog中找到的内容:

资源池“内部”中的系统内存不足,无法运行此查询。

FAIL_PAGE_ALLOCATION 8

PS:未启用资源管理器。

今天晚上,我自己开始工作,以查看发生了什么,并意识到对统计信息进行STATISTICS UPDATE操作花费的时间太长,将整个缓冲池填满高达28 GB,然后导致内存转储。需要很长时间才能更新的统计信息属于一个大小为50 GB的表。

据我所知,我想问的是;如果SQL Server具有最大服务器内存限制,则它确实会消耗达到该限制的内存,然后开始分页到磁盘。我从未遇到过SQL Server并不真正在乎最大内存限制。 我还进行了DBCC MEMORYSTATUS操作期间的UPDATE STATISTICS检查,发现CLERK_BUFFERPOOL高达28 GB。

我所缺少的任何帮助吗?如果此问题在工作时间内发生,我很乐意增加服务器内存,但这仅在索引维护操作期间发生。

0 个答案:

没有答案