当前位置: 首页 > 面试题库 >

什么会导致客户端服务器上的高缓冲I / O?

张财
2023-03-14
问题内容

我有一个具有高 缓冲区I / O 的客户端SQL Server 。

我检查了长时间运行的查询,添加了新索引,并且服务器上没有锁。是磁盘问题吗?


问题答案:

首先尝试检查您的磁盘延迟时间是否在阈值内。

您可以检查此链接以配置Perfmon:SQL Server磁盘性能指标-第1部分-
最重要的磁盘性能指标

该链接还提供了一些工具,可以对您的IO进行压力测试并获得报告。

如何使用SQLIOSim实用程序模拟磁盘子系统上的SQL Server活动

如果磁盘IO处于延迟范围内,请尝试查找引起高IO的查询,导致磁盘IO高的原因之一可能是不合适的索引,您可能需要添加正确的索引,以使SQL不会读取不必要的数据

另外,您可能会拥有较少的内存,因为内存较少会导致SQL刷新缓冲池缓存。这也会导致IO问题。

DMV检查导致高IO的查询

SELECT TOP 25 cp.usecounts AS [execution_count]
      ,qs.total_worker_time AS CPU
      ,qs.total_elapsed_time AS ELAPSED_TIME
      ,qs.total_logical_reads AS LOGICAL_READS
      ,qs.total_logical_writes AS LOGICAL_WRITES
      ,qs.total_physical_reads AS PHYSICAL_READS 
      ,SUBSTRING(text, 
                   CASE WHEN statement_start_offset = 0 
                          OR statement_start_offset IS NULL  
                           THEN 1  
                           ELSE statement_start_offset/2 + 1 END, 
                   CASE WHEN statement_end_offset = 0 
                          OR statement_end_offset = -1  
                          OR statement_end_offset IS NULL  
                           THEN LEN(text)  
                           ELSE statement_end_offset/2 END - 
                     CASE WHEN statement_start_offset = 0 
                            OR statement_start_offset IS NULL 
                             THEN 1  
                             ELSE statement_start_offset/2  END + 1 
                  )  AS [Statement]        
FROM sys.dm_exec_query_stats qs  
   join sys.dm_exec_cached_plans cp on qs.plan_handle = cp.plan_handle 
   CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
ORDER BY qs.total_logical_reads DESC;


 类似资料:
  • 问题内容: 我已经编写了一个Java客户端应用程序,该Java客户端应用程序使用客户端证书通过HTTPS连接到Apache Web服务器,并对服务器执行文件的HTTP PUT。小文件工作正常,大文件崩溃。 Apache服务器日志显示以下内容: 客户端的响应为: 我不熟悉此过程,因此不确定是否需要在这里进行重新协商,或者是否可以采取某些措施来防止重新协商。或者,也许我可以让客户端等到重新协商完成之后

  • 问题内容: 我有一个使用jQuery.ajax对另一个主机执行请求的Web应用程序(现在实际上是相同的,因为我使用的是“ localhost”的不同端口)。然后服务器返回一个cookie。 Chrome的开发工具中显示的HTTP响应中的cookie值为 因此未来的有效期为4个小时。 但是,该cookie不会与后续请求一起存储和发送(已在Chrome和Firefox中进行了测试)。我首先认为它一定是

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 我试图创建一个简单的python聊天界面,但是当两个客户端连接到服务器时,第一个客户端控制台会尽快打印空白,并导致最大递归深度错误,而第二个客户端仍然可以正常工作。服务器代码只在非空时发送数据,所以我不确定它为什么会这样做。 服务器代码: 客户代码: 错误出现在客户机代码的第19行(接收和打印服务器发送的任何数据),如有任何帮助,将不胜感激。

  • 我在web服务器上使用apollo客户端与graphql服务器(也是apollo)通信。我有一个成功的查询,可以正常工作和检索数据,但当我尝试变异时,我会收到新的Apollo错误消息。复制/粘贴到graphiql中的相同突变非常有效。 我已经检查了graphql服务器上的CORS,它已启用并正常运行。我已经将代码中的变体复制并粘贴到graphiql编辑器中,它按预期工作。 有人能为我解释一下吗,或

  • 我进入了一个客户机和服务器进行通信、相互发送消息的阶段。 我遇到的问题是如何关闭连接而不会导致错误? 如果我终止其中一个导致连接丢失的应用程序(服务器或客户端),然后导致等待输入的循环无限期地循环,并显示null。 我试图关闭插座,缓冲区,甚至线程,都不工作。 这是客户端 这是服务器端 两者都使用这些类: 唯一的区别是服务器在上面所说的位置有这个位, 所以基本上,客户端连接,服务器接受,然后客户端