Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Обзор

При использовании драйвера ODBC SQL Server, SQL Server поставщик OLE DB или управляемый поставщик System.Data.SqlClient, можно отключить с помощью соответствующих прикладного программирования (API) пула подключений. При отключении пула, нагрузки на базовую сетевую библиотеку SQL Server можно увеличить, если ваше приложение часто открывает и закрывает подключения. Данная статья содержит определенные настройки TCP/IP, которые необходимо настроить в этих условиях.

Дополнительные сведения

Отключение пула может привести к основной сети драйвер SQL Server быстро открыть и закрыть новый сокет подключения к компьютеру, на котором выполняется SQL Server. Может потребоваться изменить параметры сокетов TCP/IP по умолчанию для операционной системы и компьютера, на котором выполняется SQL Server для работы с более высоких уровней нагрузки.

Обратите внимание, что в этой статье описаны только параметры, влияющие на сетевую библиотеку SQL Server при использовании протокола TCP/IP. Отключение пула могут возникать неполадки, связанные с нагрузкой с другими протоколами SQL Server, таких как именованные каналы, но в этой статье не рассматривается в этом разделе. Данная статья является только для опытных пользователей. Если вы не понимаете в разделах данной статьи, корпорация Майкрософт рекомендует отображается хорошую книгу о сокетов TCP/IP.

Обратите внимание, что корпорация Майкрософт настоятельно рекомендует всегда использовать пул с драйверами SQL Server. С помощью группировки значительно повышает общую производительность на на стороне клиента и на стороне SQL Server при использовании драйверов SQL Server. С помощью группировки также значительно уменьшает сетевой трафик на компьютере, на котором выполняется SQL Server. Например образец теста, который используется 20 000 SQL Server, подключение открывается и закрывается с активной возможностью объединения используется около 160 сетевые пакеты TCP/IP для всего 23,520 байт сетевой активности. С пул отключена, один и тот же пример тест создается 225,129 сетевые пакеты TCP/IP, общим объемом 27,209,622 байт сетевой активности.

Обратите внимание, что при появлении этих стрессовых TCP/IP сокета проблем с сетевых библиотек SQL Server может появиться одно или несколько из следующих сообщений об ошибке при попытке подключиться к компьютеру, на котором выполняется SQL Server:

SQL Server не существует или доступ запрещен

Время ожидания истекло

Общая ошибка сети

Поставщик TCP: Обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт).

Обратите внимание, что можно также сообщения эти ошибки при другие проблемы, возникающие в SQL Server; Например если удаленный компьютер, на котором выполняется SQL Server прекращает работу, если удаленный компьютер, на котором выполняется SQL Server не ожидает сокеты TCP/IP, если сетевое подключение к компьютеру, на котором выполняется SQL Server не работает, потому что извлечены сетевого кабеля или если возникают проблемы с разрешением DNS может появиться сообщения об ошибке. Практически все, что может привести к клиенту, не удастся открыть сокет TCP/IP на компьютер, на котором выполняется SQL Server может вызвать сообщения об ошибках. Однако с проблемой стрессовых сокета проблема возникает периодически нагрузку поднимается и опускается. Компьютер может работать в течение часов без ошибок, то сообщение об ошибке возникает один или два раза, а компьютер затем выполняется несколько дополнительных часов без ошибок. Кроме того при наличии проблемы общие подключения к SQL Server работает один момент, происходит сбой следующего, а затем снова работает следующий момент. Другими словами стрессовых сокета проблемы обычно появляются случайным образом, но реальные проблемы сетевого подключения с SQL Server обычно не возникают перебоями.

Два основных проблем, связанных с нагрузкой обычно возникают при отключении пула при использовании протокола TCP/IP SQL Server: можно запустить анонимный портов на клиентском компьютере или может превысить WinsockListenBacklog по умолчанию на компьютере, на котором выполняется SQL Server.


Дополнительные сведения об анонимных портов щелкните следующий номер статьи базы знаний Майкрософт:

319502 PRB: «WSAEADDRESSINUSE» сообщение об ошибке при попытке подключения через порт анонимные после увеличить число подключений IMAP

Настройте параметры MaxUserPort и TcpTimedWaitDelay

Обратите внимание, что параметры MaxUserPort и TcpTimedWaitDelay применимы только для быстрого открытия и закрытия подключений к удаленному компьютеру, на котором выполняется SQL Server, которые клиентский компьютер не использует пул соединений. Например эти значения применяются на сервере Internet Information Services (IIS), обслуживает большое количество входящих запросов HTTP и, открытие и закрытие подключений к удаленному компьютеру, на котором работает SQL Server и, с помощью протокола TCP/IP с пул отключена. При включенном, нет необходимости настраивать параметры MaxUserPort и TcpTimedWaitDelay .

При использовании протокола TCP/IP для подключения к компьютеру, на котором выполняется SQL Server, базовую сетевую библиотеку SQL Server открывает сокет TCP/IP на компьютер, на котором выполняется SQL Server. Когда она откроется этот сокет, сетевую библиотеку SQL Server не включает параметр сокета SO_REUSEADDR TCP/IP. Дополнительные сведения о настройке сокета SO_REUSEADDR приведены в разделе «Setsockopt» в Microsoft Developer Network (MSDN).


Обратите внимание, что сетевую библиотеку SQL Server специально не включить параметр сокета SO_REUSEADDR TCP/IP по соображениям безопасности. При включении SO_REUSEADDR пользователь-злоумышленник может перехватить порт клиента для SQL Server и использовать учетные данные, которые клиент предоставляет доступ к компьютеру, на котором выполняется SQL Server. По умолчанию так как сетевую библиотеку SQL Server не включить параметр сокета SO_REUSEADDR каждый раз при открытии и закрытии сокета через сетевую библиотеку SQL Server на стороне клиента сокета вводит в состоянии TIME_WAIT, прежде чем четыре минуты. Если быстрое открытие и закрытие подключений к SQL Server по протоколу TCP/IP с пул отключена, быстро открывающие и закрывающие сокетов TCP/IP. Другими словами для каждого подключения SQL Server имеет один сокет TCP/IP. Если быстро открыть и закрыть 4000 сокетов в менее чем за четыре минуты, достигнет максимальное значение по умолчанию для анонимного порты клиента и новые попытки подключения сокета завершаться сбоем, пока существующий набор сокетов TIME_WAIT тайм-аут.

На стороне клиента может потребоваться увеличить MaxUserPort и TcpTimedWaitDelay параметров, описанных в Q319502 при наличии пула отключена. Параметры для этих значений определяется, сколько подключений SQL Server открывает и закрывает возникают на стороне клиента. Можно проверить, сколько портов клиента в состоянии TIME_WAIT, прежде чем с помощью программы Netstat на клиентском компьютере. Запустите программу Netstat с флагом -n следующим и число сокетов клиента SQL Server IP-адрес компьютера, которые находятся в состоянии TIME_WAIT, прежде чем. В этом примере IP-адрес удаленного компьютера, на котором выполняется SQL Server, 10.10.10.20, IP-адрес клиентского компьютера — 10.10.10.10 и три созданные подключения, а два находятся в состоянии TIME_WAIT, прежде чем:

C:\>netstat -n
Active Connections

Proto Local Address Foreign Address State
TCP 10.10.10.10:2000 10.10.10.20:1433 ESTABLISHED
TCP 10.10.10.10:2001 10.10.10.20:1433 ESTABLISHED
TCP 10.10.10.10:2002 10.10.10.20:1433 ESTABLISHED
TCP 10.10.10.10:2003 10.10.10.20:1433 TIME_WAIT
TCP 10.10.10.10:2004 10.10.10.20:1433 TIME_WAIT

Если запустить netstat - n и отображается рядом 4000 подключений IP-адрес конечного компьютера, на котором выполняется SQL Server, в состоянии TIME_WAIT, как увеличить MaxUserPort значение по умолчанию, можно уменьшить значение TcpTimedWaitDelay таким образом, чтобы не запустить портов Анонимный клиент. Например вы установите для параметра MaxUserPort на 20000 и установите для параметра TcpTimedWaitDelay до 30. Более низкое значение TcpTimedWaitDelay означает, что разъемы ожидания в состоянии TIME_WAIT, прежде чем меньше времени. Высокое значение MaxUserPort означает, что можно иметь несколько сокетов в состоянии TIME_WAIT, прежде чем.

Обратите внимание, что если настроить параметр MaxUserPort или TcpTimedWaitDelay , необходимо перезапустить Windows Microsoft новые параметры вступили в силу. Параметры MaxUserPort и TcpTimedWaitDelay предназначены для любого клиентского компьютера, обращения к компьютеру, на котором выполняется SQL Server через сокеты TCP/IP. Если они установлены на компьютере, на котором выполняется SQL Server, за исключением локальных подключений сокетов TCP/IP на локальном компьютере, на котором выполняется SQL Server эти параметры не имеют никакого эффекта.

Примечание. Если настроить параметр MaxUserPort , рекомендуется зарезервировать порт 1434 для использования службой обозревателя SQL Server (sqlbrowser.exe). Сведения о том, как сделать это, щелкните следующий номер статьи базы знаний Майкрософт:

Резервирование диапазона временных портов на компьютере под управлением Windows Server 2003 или Windows 2000 Server 812873

Настройка параметров WinsockListenBacklog

Дополнительные сведения об этом параметре реестра зависящие от SQL Server щелкните следующий номер статьи базы знаний Майкрософт:

154628 INF: несколько запросов на подключение TCP\IP SQL Server регистрирует ошибку 17832
Когда сетевую библиотеку SQL Server ведет прослушивание на сокеты TCP/IP, сетевую библиотеку SQL Server использует прослушивания Winsock API. Второй параметр для прослушивания API является невыполненной работы по продукту, разрешенный для этого сокета. Это отставание представляет максимальную длину очереди ожидающих подключений для слушателя. Если длина очереди превышает максимальную длину, сетевую библиотеку SQL Server сразу же отклоняет попытки подключения сокетов TCP/IP. Кроме того сетевую библиотеку SQL Server отправляет пакет ACK + Сброс.

По умолчанию используется SQL Server 2000 прослушивание параметр невыполненной работы по продукту 5. Это означает, что компьютер, на котором выполняется SQL Server передает значение 5 параметр незавершенных заданий для прослушивания Winsock API при API прослушивания устанавливает потоки прослушивания протокола TCP/IP на компьютере, на котором выполняется SQL Server. Можно настроить различные значение передано для этого параметра реестра WinsockListenBacklog. Начиная с SQL Server 2005, сетевая библиотека передает значение SOMAXCONN как параметр невыполненной работы по продукту для прослушивания API. SOMAXCONN позволяет поставщику Winsock для этого параметра задать максимальное значение в разумных пределах. Таким образом в разделе реестра WinsockListenBacklog больше не используется и в SQL Server 2005.

Список невыполненных работ по установке работает следующим образом: предположим, что произвольные служба прослушивает входящие запросы сокет TCP/IP. Если установить параметр невыполненной работы по продукту 5, многие запросы на подключение сокета постоянно потоковой передачи в службы нельзя будет отвечать на входящие запросы настолько быстро, насколько они бывают. На этом этапе эти входящие запросы в очередь незавершенных заданий очереди на уровне сокетов TCP/IP и службы позже можно извлекать запросы из этой очереди и обрабатывать входящий запрос на подключение сокета. После заполнения очереди на уровне сокетов TCP/IP сразу же отклоняет любой дополнительный разъем запросы, прибывшие в путем отправки пакета ACK + Сброс обратно клиенту. Увеличить размер увеличивается невыполненной работы очереди запросов количество ожидающих подключения через сокет, на уровне сокетов TCP/IP очереди, прежде чем запросы будут отклонены.

Обратите внимание, что параметр WinsockListenBacklog для SQL Server. SQL Server пытается прочитать этот параметр реестра при первом запуске службы SQL Server. Если этот параметр отсутствует, используется значение по умолчанию 5. Если параметр реестра существует, SQL Server считывает параметр и использует предоставленное значение параметра невыполненной работы по продукту при прослушивания WinSock API вызывается как набор потоков прослушивающий сокет TCP/IP вверх внутри SQL Server.

Чтобы определить, если вы столкнулись с этой проблемы, можно запустить трассировку сетевого монитора на клиенте или компьютер, на котором работает SQL Server и искать запросы на подключение сокета, отклоняются ACK + Сброс. Если посмотреть на пакеты TCP/IP в сетевом мониторе, можно увидеть следующий пакет после возникновения этой проблемы:

Frame: Base frame propertiesETHERNET:  EType = Internet IP (IPv4) 
IP: Protocol = TCP - Transmission Control; Packet ID = 40530; Total IP Length = 40; Options = No Options
TCP: Control Bits: .A.R.., len: 0, seq: 0-0, ack:3409265780, win: 0, src: 1433 dst: 4364
TCP: Source Port = 0x0599
TCP: Destination Port = 0x110C
TCP: Sequence Number = 0 (0x0)
TCP: Acknowledgement Number = 3409265780 (0xCB354474)
TCP: Data Offset = 20 bytes
TCP: Flags = 0x14 : .A.R..
TCP: ..0..... = No urgent data
TCP: ...1.... = Acknowledgement field significant
TCP: ....0... = No Push function
TCP: .....1.. = Reset the connection
TCP: ......0. = No Synchronize
TCP: .......0 = Not the end of the data
TCP: Window = 0 (0x0)
TCP: Checksum = 0xF1E7
TCP: Urgent Pointer = 0 (0x0)

Обратите внимание, что исходный порт 1433 в десятичном формате или 0x599. Это означает, что пакет поступает из обычного компьютера, на котором выполняется SQL Server, которые выполняется на порт по умолчанию 1433. Также Обратите внимание на значительное поле Подтверждение и Сброс подключения флаги установлены. Если вы знакомы с фильтрацией трассировку сетевого монитора, можно фильтровать значение флагов TCP, 0x14 шестнадцатеричное только пакеты ACK + СБРОСА в трассировку сетевого монитора см.

Обратите внимание, что можно также просмотреть подобные пакеты ACK + Сброс, если компьютер, на котором выполняется SQL Server выполняется не на всех, или если компьютер, на котором выполняется SQL Server не прослушивает протокол TCP/IP, так, чтобы видеть пакеты ACK + RESET не определенного подтверждения наличия данной проблемы. Если WinsockListenBacklog слишком мало, некоторые получаемые попыток подключения пакетов и некоторые соединения немедленно принять пакетов ACK + СБРОСА в одного интервала времени.

Обратите внимание, что в очень редких случаях может потребоваться настроить его даже при включенном на клиентских компьютерах. Например если многие клиентские компьютеры идет на одном компьютере, на котором выполняется SQL Server, большое количество одновременных входящих попыток подключения может возникнуть в любой конкретный момент времени даже при включенном пуле.

Примечание. Если настроить параметр WinsockListenBacklog , нет необходимости перезагрузки для этого параметра вступило в силу. Просто остановить и перезапустить службу SQL Server для параметра вступили в силу. Параметр реестра WinsockListenBacklog предназначен только для компьютера, на котором выполняется SQL Server. Он не влияет на любом клиентском компьютере, обращения к SQL Server.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×