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

Переводы статьи Переводы статьи
Код статьи: 328476 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

При использовании драйвера 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, при использовании драйверов 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: использовать анонимные портов на клиентском компьютере или может превысить значение по умолчанию WinsockListenBacklog Установка на компьютере, на котором запущен SQL Server.

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

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

Обратите внимание, что MaxUserPort и TcpTimedWaitDelay параметры применимы только для компьютера, на котором быстрого открытия и закрытия подключений к удаленному компьютеру под управлением SQL Server, который использует пул соединений. Например эти значения применяются на сервере служб информации Интернет (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 Установка, необходимо перезапустить Microsoft Windows вступило в силу. В MaxUserPort и TcpTimedWaitDelay параметры, для любого клиентского компьютера, обращение к компьютеру, на котором запущен SQL Server через сокеты TCP/IP. Эти параметры не имеют действует, если они установлены на компьютере, на котором запущен SQL Server, если вы делаете локальных подключений сокетов TCP/IP на локальном компьютере, на котором запущен SQL Server.

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

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

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

По умолчанию используется SQL Server 2000 прослушивать параметр учета остающейся работы по 5. Это означает, что компьютер, на котором запущен SQL Server передает значение 5 для параметра невыполненной работы LISTEN Winsock API при LISTEN API устанавливает протокол TCP/IP, прослушивание потоков на компьютере, на котором запущен SQL Server. Можно изменить раздел реестра WinsockListenBacklog, чтобы указать другое значение передано для этого параметра. Начиная с SQL Server 2005, сетевой библиотеки передает значение SOMAXCONN в качестве параметра учета остающейся работы по LISTEN 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 и найдите запросы на подключение сокета, отклоняются с Опозданием + СБРОСА. Если изучить пакетов TCP/IP в сетевом мониторе после возникновения этой проблемы просмотра пакетов, таких как:
Frame: Base frame properties
ETHERNET:  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)
				
Обратите внимание, что исходный порт 0x599 или 1433 в десятичном формате. Это означает, что пакет поступает из обычного компьютера, на котором запущен SQL Server и который работает через порт по умолчанию 1433. Обратите внимание, что Важные поля подтверждения и Сброс подключения установлены флаги. Если вы знакомы с фильтрацией трассировку сетевого монитора, можно отфильтровать значения флагов TCP, 0x14 шестнадцатеричное для просмотра только пакеты ACK + СБРОСА в трассировку сетевого монитора.

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

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

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

Свойства

Код статьи: 328476 - Последний отзыв: 8 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft ADO.NET 1.1
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Ключевые слова: 
kbsqlsetup kbinfo kbmt KB328476 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:328476

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com