我正在使用JMeter来测试我们的应用程序的性能。但我发现当我从JMeter发送20个请求时,原因结果应该是在sql server中添加20条新记录,但我只找到5条新记录,这意味着SQL服务器丢弃其他请求(因为我带了一个日志) ,并确保将插入的新记录发送到sql server。)
有人有想法吗? SQL服务器每秒处理的请求阈值数是多少?或者我需要做一些配置吗?
是的,在我的应用程序中,我尝试过,但似乎只接受了5个请求,我不知道如何配置,然后它可以接受更多。
答案 0 :(得分:7)
我不相信每秒的nr个请求会直接关联到SQL服务器丢弃你的插入内容。也许有一个应用程序逻辑错误回滚或无法提交插入。或者应用程序无法处理并发并插入违反约束的数据。我也会检查服务器日志中的死锁。
答案 1 :(得分:5)
使用SQL事件探查器或LINQ数据上下文进行日志记录,以查看实际发送到服务器的内容,然后确定问题所在。
启用数据上下文日志,如下所示:
datacontext.Log = Console.Out;
作为旁注,我在SQL Server中每秒处理10 000个事务,所以我不认为这是问题所在。
答案 2 :(得分:3)
这非常依赖于您正在进行的查询类型。您可以有许多查询请求已存在于缓冲区中的数据,因此不需要磁盘读取访问,或者您可以进行读取,这实际上需要磁盘访问。如果数据库很小并且你有足够的内存,那么你可能始终拥有内存中的所有数据 - 访问速度非常快,你可能会得到100多个查询/秒。如果您需要读取磁盘,则依赖于您的硬件。我选择了配备UltraSCSI-160驱动器的UltraSCSI-160控制器,这是PC类型平台上最快的选择。我每晚处理大约75,000条记录(它们从另一台服务器下载)。对于我处理的每条记录,程序会进行大约4-10次查询,以便将新记录放入正确的“插槽”中。整个过程大约需要3分钟。我在850 MHz AMD Athlon机器上运行它,内存为768 MB。 希望这能给你一些关于速度的指示。
答案 3 :(得分:0)
要获得SQL Server和其他RDBMS的基准测试,请访问Processing Performance Council Web
答案 4 :(得分:0)
您还可以使用Sql Server探查器来检查查询的执行方式
答案 5 :(得分:0)
这是一个古老的研究案例,现在是2017年,而2019年我正在等待观察会发生什么情况
SQL Server 2016 1 200 000批处理请求/秒具有LOB支持的内存优化表,本机编译的存储过程