首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL压力的多个用户的Server超时异常

使用SQL压力的多个用户的Server超时异常
EN

Database Administration用户
提问于 2019-01-07 10:35:31
回答 1查看 1.3K关注 0票数 0

我们有一个存储过程,它需要大约3-4秒来执行,因为它有许多连接和联合。但是,如果我们尝试使用带有100个线程的SQL Stress来执行该存储过程,它会给出许多超时异常。信息是..。

超时过期了。从池获得连接之前经过的超时时间。这可能是因为所有池连接都在使用中,并且达到了最大池大小。

这是在生产服务器上。

如果在本地环境中使用SQL压力执行相同的操作,则不会出现任何异常。

这可能是Server配置问题。它显示了任务管理器最大值中使用的5031 MB,但是系统内存为64 GB。

我应该采取哪些步骤来进一步调查?

EN

回答 1

Database Administration用户

发布于 2019-01-08 14:52:01

检查生产Server上的内存设置。它可能不是一个问题,也可能是限制你。我从sql调优专家那里得到的指导如下:

为操作系统预留1GB的RAM,在4-16 GB的范围内为每4GB的RAM预留1GB的内存,然后为安装在16 GB以上的8GB RAM预留1GB的内存。

使用此公式,假设它是唯一的实例,并且服务器专用于运行Server,则可以考虑将SQL server设置为54 to的最大内存。

此查询需要3-4秒才能完成。它可能是多核的。您可以知道,如果查看执行计划,您会看到一些步骤上的黄色箭头,然后是一个合并并行化的步骤。如果它是并行的,那么它实际上是使用6个核心,您可能是18+秒的CPU时间。并行化可以掩盖这样的问题,直到加载。

正如一位评论员所说的那样,尝试同时运行这100次是行不通的,您的应用程序超时可能会遇到问题,并且可能会导致sql server不堪重负并没有响应。像这样的查询只需要每秒运行几次就会导致问题,导致服务器负载和数据库内部阻塞。

将其放在查询的开头,以查看执行时间和物理IO,以确定可能出现的问题。它将显示CPU使用的时间和IO号码。检查这些信息会让您知道是IO问题还是CPU问题。

设置统计信息IO

设定统计时间

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/226486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档