При высокой нагрузке получена странная ошибка соединения SQL - PullRequest
1 голос
/ 31 мая 2019

Я могу нормально подключиться к своей базе данных MSSQL 2017 через JDBC, однако, когда сервер базы данных находится под большой нагрузкой, я получаю эту ошибку подключения при выполнении запроса.

Я просто исчерпал возможности сервера? Может быть, это проблема 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 Ответ

1 голос
/ 31 мая 2019

MS SQL Server имеет проблемы, когда слишком много соединений и рабочих потоков от клиентов.

Вы можете проверить текущий счетчик соединений.

Select Count(*) FROM MASTER.DBO.SYSPROCESSES

Существуют зависимости между ядрами ЦП и рабочими потоками. 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

Также вы можете увидеть типы ожидания THREADPOOL в TOP.

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 = ...»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...