高负载下收到奇怪的SQL连接错误

时间:2019-05-31 06:35:56

标签: sql sql-server jdbc

我可以通过JDBC很好地连接到我的MSSQL 2017数据库,但是当数据库服务器负载很重时,运行查询时会出现此连接错误。

我是否简单地使服务器可以做什么? 也许这是与NIC有关的问题? 要进行任何性能设置调整吗?

com.microsoft.sqlserver.jdbc.SQLServerException: 
The TCP/IP connection to the host 192.168.1.150, port 1433 has failed. 
Error: "Connection timed out: no further information. 
Verify the connection properties. Make sure that an instance of 
SQL Server is running on the host and accepting TCP/IP connections 
at the port. Make sure that TCP connections to the port are not blocked by a firewall.".  

1 个答案:

答案 0 :(得分:1)

当来自客户端的连接和工作线程过多时,MS SQL Server会出现问题。

您可以检查当前的连接数。

Select Count(*) FROM MASTER.DBO.SYSPROCESSES

CPU内核与工作线程之间存在依赖关系。 https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-max-worker-threads-server-configuration-option?view=sql-server-2017

主机上的最大工作线程数。

Select max_workers_count from sys.dm_os_sys_info

您还可以在TOP中看到等待类型THREADPOOL。

SELECT TOP 100
 [Wait type] = wait_type,
 [Wait time (s)] = wait_time_ms / 1000,
 [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0 
               / SUM(wait_time_ms) OVER())
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%' 
ORDER BY wait_time_ms DESC;

关于等待线程池: https://www.sqlskills.com/help/waits/threadpool/

检查此版本。

或者我不了解情况,并且在连接和工作查询后X秒钟后出现问题。 通过连接字符串(例如“ queryTimeout = ...”)检查应用程序中的查询超时