【问题标题】:SQL Server 2016 experiences insufficient memory or sessions exceeds the maximum allowed in the serverSQL Server 2016 遇到内存不足或会话超过服务器中允许的最大值
【发布时间】:2019-02-19 19:28:05
【问题描述】:

在 SQL Server 2016 中,我们正在获取堆栈转储以查找错误

内存不足或配置的会话数超过服务器允许的最大值

这是从 SQL Server 2014 新升级到 SQL Server 2016 (SP2)。它位于 VM 上,具有 48 GB 内存。当这个错误发生时,最大内存设置为 24GB,因为我说这个错误,我将 MAX 服务器内存增加到 36GB。

但这只是 SSIS 数据库服务器,这就是之前分配 24 GB 的原因,我非常怀疑它是因为内存压力

版本:

Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64)

错误:

错误:17300,严重性:16,状态:1。(参数:)。错误以简洁模式打印,因为在格式化过程中出现错误。跟踪、ETW、通知等被跳过。

IO Completion Listener (0x8c4) Worker 0x0000006B1F680160 在节点 0 上似乎没有产生。大约使用的 CPU:内核 0 毫秒,用户 0 毫秒,间隔:15038。

错误:17312,严重性:16,状态:1。
由于启动任务时出错(设置状态 3),SQL Server 正在终止系统或后台任务 SSB 任务。

错误:28709,严重性:16,状态:19。
调度程序无法创建新线程。

错误:17300,严重性:16,状态:1。
SQL Server 无法运行新的系统任务,原因可能是内存不足或配置的会话数超过了服务器允许的最大值。验证服务器是否有足够的内存。使用带有选项“用户连接”的 sp_configure 检查允许的最大用户连接数。使用 sys.dm_exec_sessions 检查当前会话数,包括用户进程。

错误:17312,严重性:16,状态:1。
由于启动任务时出错(设置状态 1),SQL Server 正在终止系统或后台任务 XStoreLeaseRenewalTask​​2。

错误:17803,严重性:20,状态:13。
建立连接时内存分配失败。减少不必要的内存负载,或增加系统内存。连接已关闭。 [客户:]

错误:17312,严重性:16,状态:1。
由于启动任务时出错(设置状态 1),SQL Server 正在终止系统或后台任务 XStoreLeaseRenewalTask​​。

错误:9602,严重性:16,状态:1。
启动系统任务失败,错误代码 28709,状态 19。

错误:28709,严重性:16,状态:19。
调度程序无法创建新线程。

错误:17803,严重性:20,状态:13。
建立连接时内存分配失败。减少不必要的内存负载,或增加系统内存。连接已关闭。 [客户:]

错误:17803,严重性:20,状态:13。
建立连接时内存分配失败。减少不必要的内存负载,或增加系统内存。连接已关闭。 [客户:]

错误:17300,严重性:16,状态:1。
SQL Server 无法运行新的系统任务,原因可能是内存不足或配置的会话数超过了服务器允许的最大值。验证服务器是否有足够的内存。使用带有选项“用户连接”的 sp_configure 检查允许的最大用户连接数。使用 sys.dm_exec_sessions 检查当前会话数,包括用户进程。

错误:28709,严重性:16,状态:19。
调度程序无法创建新线程。

错误:17312,严重性:16,状态:1。
由于启动任务时出错(设置状态 1),SQL Server 正在终止系统或后台任务 SSB 任务。

错误:28709,严重性:16,状态:19。
调度程序无法创建新线程。

错误:9602,严重性:16,状态:1。
启动系统任务失败,错误代码 28709,状态 19。

还有内存计数器。我是在升级到 2016 后才遇到这个问题。请分享您的想法,我该如何解决这个问题。

编辑:

发现在索引优化期间发生了问题。我使用 Ola 脚本,来源:https://ola.hallengren.com 来优化索引。此服务器只有 SSIS DB。任何帮助都深表感谢。

EXEC [Indexoptimize]   
  @Databases = 'ALL_DATABASES',   
  @FragmentationLow = NULL,   
  @FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_OFFLINE',   
  @FragmentationHigh = 'INDEX_REBUILD_OFFLINE',   
  @FragmentationLevel1 = 5,   
  @FragmentationLevel2 = 30,   
  @PageCountLevel = 1000,   
  @SortInTempdb = 'Y',   
  @FillFactor = NULL,   
  @PadIndex = NULL,   
  @LOBCompaction = 'Y',   
  @UpdateStatistics = 'ALL',   
  @OnlyModifiedStatistics = 'N',   
  @StatisticsSample = 100,   
  @StatisticsResample = 'N',   
  @PartitionLevel = 'N',   
  @MSShippedObjects = 'N',   
  @Indexes = NULL,   
  @TimeLimit = NULL,   
  @Delay = NULL,   
  @LockTimeout = NULL,   
  @LogToTable = 'Y',   
  @Execute = 'Y'   

【问题讨论】:

  • 您是否查看了sp_configure with option 'user connections' 以检查允许的最大用户连接数。?
  • 还有,你升级的时候申请了CU5吗?
  • 用户连接 - 最小值:0 最大值:32767,应用 SP2 - CU2 ((SP2) (KB4052908) - 13.0.5026.0 (X64))
  • 发现问题在索引操作期间发生。请帮我解决问题

标签: sql-server multithreading memory indexing database-administration


【解决方案1】:

我最近遇到了同样的问题。我检查了连接数,但与该服务器建立的连接并不多。我还查找了内存泄漏,但数据库服务器未连接到任何应用程序服务器。

最后,我发现问题是由于内存不足。同一数据库服务器处于迁移阶段。旧的有 256 GB,但新的有 96 GB。问题仅在我为其中一个大型数据库运行 DBCCCHECKDB 时才开始。向数据库服务器添加更多 RAM 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多