8

我正在使用 JMeter 来测试我们应用程序的性能。但是我发现当我从 JMeter 发送 20 个请求时,原因结果应该是向 sql server 添加 20 个新记录,但我只找到 5 个新记录,这意味着 SQL server 丢弃了其他请求(因为我拿了一个日志, 并确保插入的新记录被发送到 sql server。)

有人有想法吗?SQL Server 每秒可以处理的请求阈值是多少?还是我需要做一些配置?

是的,在我的应用程序中,我试过了,但似乎只接受了 5 个请求,我不知道如何配置,然后它可以接受更多。

4

6 回答 6

8

我不相信每秒请求的 nr 与 SQL 服务器丢弃您的插入直接相关。可能存在回滚或未能提交插入的应用程序逻辑错误。或者应用程序无法处理并发并插入违反约束的数据。我也会检查服务器日志是否存在死锁。

于 2009-12-01T08:49:37.803 回答
6

使用 SQL Profiler 或 LINQ 数据上下文进行日志记录,以查看实际发送到服务器的内容,然后确定问题所在。

像这样启用数据上下文日志:

datacontext.Log = Console.Out;

附带说明一下,我在 SQL Server 中每秒处理 10 000 个事务,所以我认为这不是问题。

于 2009-12-01T09:40:17.197 回答
5

这在很大程度上取决于您正在执行的查询类型。您可以有许多查询请求已经在缓冲区中的数据,因此不需要磁盘读取访问,或者您可以进行读取,这实际上需要磁盘访问。如果您的数据库很小并且您有足够的内存,那么您可能始终将所有数据都保存在内存中 - 访问会非常快,您可能会获得 100 多个查询/秒。如果您需要读取磁盘,则依赖于您的硬件。我选择了带有 UltraSCSI-160 驱动器的 UltraSCSI-160 控制器,这是您可以在 PC 类型平台上获得的最快选择。我每晚处理大约 75'000 条记录(它们是从另一台服务器下载的)。对于我处理的每条记录,程序都会进行大约 4 到 10 次查询以将新记录放入正确的“槽”中。整个过程大约需要3分钟。一世' 我在具有 768 MB RAM 的 850 MHz AMD Athlon 机器上运行它。希望这可以让您对速度有所了解。

于 2009-12-01T08:58:28.953 回答
1

这是一个古老的研究案例,现在有2017年,2019年我在等着看会发生什么

https://blogs.msdn.microsoft.com/sqlcat/2016/10/26/how-bwin-is-using-sql-server-2016-in-memory-oltp-to-achieve-unprecedented-performance-and-规模/

SQL Server 2016 1 200 000 批请求/秒 具有 LOB 支持的内存优化表,本机编译存储过程



在此处输入图像描述

于 2019-09-09T00:44:24.577 回答
0

要获得 SQL Server 和其他 RDBMS 的基准测试,请访问处理性能委员会 Web

于 2009-12-01T08:52:12.523 回答
0

您还可以使用 Sql Server 配置文件来检查您的查询是如何执行的

于 2009-12-01T09:51:24.300 回答