Applies ToMicrosoft 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

Kopsavilkums

Izmantojot SQL Server ODBC draiveris, SQL Server OLE DB nodrošinātāju vai System.Data.SqlClient pārvaldītā nodrošinātāju, varat atspējot savienojuma pūlu, izmantojot atbilstošo programmu programmēšanas interfeisi (API). Ja atspējojat pūlu, stresa pamata SQL Server tīkla bibliotēkā var palielināt, ja programmu bieži atver un aizver savienojumu. Šajā rakstā ir aprakstīts noteiktu TCP/IP iestatījumi, iespējams, vajadzēs pielāgot šādos apstākļos.

Papildinformācija

Izslēdzot apvienošana var radīt pamata SQL Server tīkla draiveris ātri atvērt un aizvērt jaunu ligzdu savienojumus ar datoru, kurā darbojas SQL serveris. Jums var būt nepieciešams mainīt TCP/IP ligzdu noklusētās operētājsistēmas un datoru, kurā darbojas SQL serveris rīkoties ar lielāku stresu.Ņemiet vērā, ka tikai šajā rakstā ir izklāstīts iestatījumus, kas ietekmē SQL Server tīkla bibliotēku, izmantojot TCP/IP protokolu. Izslēdzot apvienošana var izraisīt stresu saistītās problēmas ar citu SQL Server protokoliem, piemēram, nosauktus programmkanālus, bet nav šajā rakstā aplūkots rakstā. Šajā rakstā ir paredzēta tikai pieredzējušiem lietotājiem. Ja nav saprotams tēmas šajā rakstā, Microsoft iesaka tiek parādīts labs izdevums par TCP/IP ligzdu.Ņemiet vērā, ka Microsoft stingri iesaka vienmēr izmantot apvienošana ar SQL Server draiverus. Izmantojot apvienošana ievērojami uzlabo vispārējo darbību, gan klienta pusē un SQL servera pusē, izmantojot SQL Server draiverus. Datorā, kurā darbojas SQL serveris, izmantojot apvienošana arī ievērojami samazina tīkla trafiku. Piemēram, 20 000 SQL servera savienojuma atver un aizver ar apvienošana iespējota izmantoto parauga pārbaudes izmanto aptuveni 160 TCP/IP tīkla paketēm, 23,520 baiti tīkla darbības kopā. Atspējota pūlu, izmantojot paša parauga pārbaudes ģenerēts 225,129 TCP/IP tīkla pakešu 27,209,622 baiti tīkla darbības kopā.Ņemiet vērā, kad redzat šo stresa problēmām saistībā ar TCP/IP ligzdu ar SQL Server tīkla bibliotēkas, var tikt saņemts viens vai vairāki no šiem kļūdu ziņojumiem, mēģinot izveidot savienojumu ar datoru, kurā darbojas SQL serveris:

SQL Server nepastāv vai piekļuve liegta

Beidzies taimauts

Vispārīgi tīkla kļūdas

TCP Provider: Tikai viens katras ligzdas adreses (protokols/tīkla adrese/ports) izmantošana parasti ir atļauta.

Ņemiet vērā, ka varat arī saņemt šo kļūdas ziņojumu, rodas citas problēmas ar SQL Server; piemēram, varat saņemt šos kļūdas ziņojumus ja attālā datorā, kurā darbojas SQL serveris ir izslēgta, ja attālā datorā, kurā darbojas SQL serveris neklausās un TCP/IP ligzdu, ja tīkla savienojums ar datoru, kurā darbojas SQL serveris ir bojāts, tāpēc, ka tīkla kabelis ir velk vai rodas DNS problēmas risinājums. Būtībā var radīt klientam neizdodas atvērt TCP/IP ligzdu, datorā, kurā darbojas SQL serveris, ko var izraisīt kļūdu ziņojumi. Tomēr ar ligzdu stresa saistītas problēmas, problēma rodas neregulāri slodzes palielinās un samazinās. Datoru var ilgt stundu bez kļūdām, tad kļūda rodas vienu vai divas reizes, un dators un pēc tam darbojas vairākas stundas bez kļūdām. Arī esat saskāries ar šo problēmu, kad vispārējā savienojums ar SQL Server darbojas viens instant, neizdodas nākamo un pēc tam darbojas nākamajā acumirklī. Citiem vārdiem, ligzdas stresa saistītas problēmas parasti rodas neregulāri, bet īsta tīkla savienojamības problēmas ar SQL Server parasti nerodas neregulāri.Divas galvenās stresa saistītas problēmas parasti rodas, ja atspējojat pūlu, kamēr izmantojat SQL Server TCP/IP protokols: var pietrūkt anonīms portus klienta datorā vai nedrīkst pārsniegt noklusējuma WinsockListenBacklog datorā, kurā darbojas SQL serveris.Lai iegūtu papildinformāciju par anonīmu portus, noklikšķiniet uz raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

319502 PRB: "WSAEADDRESSINUSE" kļūdas ziņojums, mēģinot izveidot savienojumu, izmantojot anonīmu portu pēc palielināsit savienojumu ierobežojumu IMAP

MaxUserPort un TcpTimedWaitDelay iestatījumu pielāgošana

Ņemiet vērā, ka ir MaxUserPort un TcpTimedWaitDelay iestatījumi attiecas tikai uz klienta datorā, kurā ir ātri sākuma un beigu savienojumu ar attālo datoru, kurā darbojas SQL serveris, un netiek izmantoti savienojuma pūlu. Piemēram, šie iestatījumi ir piemērojami serverī Internet Information Services (IIS), ir liels skaits ienākošo HTTP pieprasījumus apkopes un kas ir sākuma un beigu savienojumu ar attālo datoru, kurā darbojas SQL Server un kas izmanto TCP/IP protokolu ar apvienošana atspējota. Ja ir iespējota pūlu, nav MaxUserPort un TcpTimedWaitDelay iestatījumu pielāgošana.Izmantojot TCP/IP protokolu izveidot savienojumu ar datoru, kurā darbojas SQL serveris, pamata SQL Server tīkla bibliotēka tiek atvērta TCP/IP ligzdu, datorā, kurā darbojas SQL serveris. Atverot šo ligzdu, SQL Server tīkla bibliotēkas neiespējo opciju SO_REUSEADDR TCP/IP ligzdu. Lai iegūtu papildinformāciju par SO_REUSEADDR ligzdas iestatījumu, skatiet tēmu "Setsockopt" Microsoft izstrādātāju tīkla (MSDN).Ņemiet vērā, ka SQL Server tīkla bibliotēkas īpaši neiespējo SO_REUSEADDR TCP/IP ligzdu opciju drošības apsvērumu dēļ. Ja SO_REUSEADDR ir iespējots, ļaunprātīgs lietotājs var ļaunprātīgi klienta portu SQL Server un izmantot akreditācijas dati, kas klientam nodrošina piekļūt datoru, kurā darbojas SQL serveris. Pēc noklusējuma SQL Server tīkla bibliotēkas neiespējo opciju SO_REUSEADDR ligzdu, katru reizi, kad atverat un aizverat ligzdas ar SQL Server bibliotēku tīkla klienta pusē, jo ligzda ievada TIME_WAIT valsts četras minūtes. Ja ātri atvēršanas un aizvēršanas pār TCP/IP SQL servera savienojumu ar apvienošana atspējota, ir ātri atvēršana un aizvēršana TCP/IP ligzdu. Proti, katram SQL servera savienojums ir viena TCP/IP ligzdu. Ātri atverot un aizverot 4000 ligzdas mazāk nekā četras minūtes, tiks sasniedz anonīms klienta porti maksimālo noklusējuma iestatījumu un jauna ligzda savienojuma izveides mēģinājumi neizdodas līdz esošo kopu TIME_WAIT ligzdas iestājies taimauts.Klienta pusē, iespējams, ir atspējota apvienošana minētos Q319502 MaxUserPort un TcpTimedWaitDelay iestatījumu. Šīs vērtības iestatījumi nosaka, cik SQL servera savienojuma atveras un aizveras notiek klienta pusē. Varat pārbaudīt, cik klienta porti ir TIME_WAIT stāvoklī, izmantojot rīku Netstat klienta datorā. Palaidiet rīku Netstat ar karodziņu n šādi un skaita klienta ligzdas SQL servera IP adresi, TIME_WAIT stāvoklī. Šajā piemērā attālais dators, kurā darbojas SQL servera IP adrese ir 10.10.10.20, klienta datora IP adrese ir 10.10.10.10 un trīs izveidot savienojumus un divi savienojumi ir TIME_WAIT stāvoklī:

C:\>netstat -nActive 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

Ja palaižat netstat n redzat gandrīz 4000 savienojumi ar IP adrese mērķa datorā, kurā darbojas SQL serveris ir TIME_WAIT stāvoklī, var gan palielināt MaxUserPort noklusējuma iestatījumu un samazināt TcpTimedWaitDelay iestatījums nedarbojas no klienta anonīms porti. Piemēram, iestatiet MaxUserPort 20000 un iestatiet TcpTimedWaitDelay 30. TcpTimedWaitDelay zemāku nozīmē ligzdas gaidīt TIME_WAIT stāvokli mazāk laika. Lielāku MaxUserPort iestatījumu nozīmē, ka var būt vairākas ligzdas TIME_WAIT stāvokli.Ņemiet vērā, ka ja pielāgojat MaxUserPort vai TcpTimedWaitDelay iestatījumu, jārestartē Microsoft Windows for jaunais iestatījums stātos spēkā. MaxUserPort un TcpTimedWaitDelay iestatījumi ir visas klienta datorā, kurā ir runāt ar datoru, kurā darbojas SQL Server TCP/IP ligzdu. Šie iestatījumi nav nekādas ietekmes, ja tie ir noteikti datorā, kurā darbojas SQL Server, izņemot gadījumus, kad veicat vietējo TCP/IP ligzdu savienojumi lokālajā datorā, kurā darbojas SQL Server.Piezīme. Ja jāiestata MaxUserPort , ieteicams rezerves porta 1434 lietošanai ar SQL Server pārlūka pakalpojums (sqlbrowser.exe). Lai iegūtu papildinformāciju, kā to izdarīt, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

Kā rezervēt datorā, kurā darbojas sistēma Windows Server 2003 vai Windows 2000 Server izplatītā portu virkni 812873

Jāiestata WinsockListenBacklog

Lai iegūtu papildinformāciju par šo SQL Server specifisku reģistra iestatījumu, noklikšķiniet uz raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

154628 INF: SQL reģistrē 17832 ar vairākiem TCP\IP savienojuma pieprasījumiJa SQL Server tīkla bibliotēkas klausās TCP/IP ligzdu, SQL Server tīkla bibliotēku izmanto klausīties Winsock API. Klausīties API otrais parametrs ir rezerves atļauto ligzdu. Šo rezerves apzīmē rindu līdz savienojumi uztvērējs maksimālais garums. Kad rindas garums pārsniedz maksimālo garumu, SQL Server tīkla bibliotēkas nekavējoties noraida vairāk TCP/IP ligzda savienojuma izveides mēģinājumi. Turklāt SQL Server tīkla bibliotēkas sūta ACK + RESET paketi.SQL Server 2000 izmanto noklusējuma klausās rezerves noteikšana 5. Tas nozīmē, ka datorā, kurā darbojas SQL Server nodod vērtība 5 rezerves parametru klausīties Winsock API, iestatot klausīties API TCP/IP protokolu klausīšanās pavedienu datorā, kurā darbojas SQL serveris. Var pielāgot WinsockListenBacklog reģistra atslēgu, lai norādītu citu vērtību, kas nodod šo parametru. Sākot ar SQL Server 2005, tīkla bibliotēkas nodod SOMAXCONN vērtību iestatījums rezerves klausīties API. SOMAXCONN ļauj iestatīt maksimālo pieņemamu vērtību šim iestatījumam Winsock nodrošinātājs. Tādēļ WinsockListenBacklog reģistra atslēga vairs neizmanto vai nepieciešams SQL Server 2005.Rezerves iestatījums darbojas šādi: Pieņemsim, ka patvaļīgi pakalpojumu klausās TCP/IP ligzdu ienākošo pieprasījumu. Ja iestatāt 5 rezerves iestatījumu un daudz ligzda savienojuma pieprasījumi tiek nepārtraukti straumēšanu pakalpojums var nebūt iespējams reaģēt tik ātri, kā tie ir ienākošo pieprasījumu. Šajā brīdī TCP/IP drošligzdu slāņa rindas šo rezerves rindā ienākošos pieprasījumus un pakalpojumu vēlāk pavelciet pieprasījumus no šīs rindas un apstrādātu ienākošā ligzda savienojuma pieprasījumu. Kad rinda ir pilna, TCP/IP drošligzdu slāņa nekavējoties noraida visas papildu ligzdu pieprasījumi, kas saņemti, nosūtot ACK + RESET paketi atpakaļ klientam. Palielinot rezerves rindas lielumu palielina skaitu līdz izjaucams savienojums prasa drošligzdu slāņa TCP/IP rindas pirms pieprasījumi tiek noraidīti.Ņemiet vērā, ka WinsockListenBacklog iestatījums attiecas uz programmu SQL Server. SQL Server mēģina nolasīt šo reģistra iestatījumu, pirmo reizi startējot SQL servera pakalpojums. Ja iestatījums nepastāv, tiek izmantots noklusējuma 5. Ja reģistra iestatījums, SQL Server nolasa iestatījumu un izmanto norādītā vērtība kā rezerves iestatījumu, WinSock API klausīties sauc par TCP/IP ligzdu klausīšanās pavedienu ir iestatīts uz augšu iekšpusē SQL Server.Kā noteikt, vai datorā darbojas šo problēmu, var palaist tīkla pārraudzības trasēšanas klients vai datoru, kurā darbojas SQL serveris un meklējiet ligzda savienojuma pieprasījumi, kas uzreiz tiek noraidīti ar ACK + ATIESTATĪT. Ja atvērsit TCP/IP paketes Network Monitor, redzat paketes, piemēram, šāda problēma rodas:

Frame: Base frame propertiesETHERNET:  EType = Internet IP (IPv4) IP: Protocol = TCP - Transmission Control; Packet ID = 40530; Total IP Length = 40; Options = No OptionsTCP: 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)

Ņemiet vērā, ka avota portu 0x599 vai 1433 decimāldaļas. Tas nozīmē, ka paketi ir tipisks datorā, kurā darbojas SQL serveris, un darbojas 1433 noklusējuma portu. Ņemiet vērā iestatīts apstiprinājuma lauks ir nozīmīgs un Atiestatīt savienojumu karodziņi. Ja esat iepazinies ar tīkla pārraudzības trasēšanas filtrēšana, TCP karodziņu vērtība var filtrēt pēc 0x14 heksadecimālo skatīt tikai tīkla pārraudzības trasēšanas ACK + RESET paketes.Ņemiet vērā, ka varat arī skatīt līdzīgas ACK + RESET paketes datoru, kurā darbojas SQL serveris nedarbojas vispār vai datoru, kurā darbojas SQL serveris neklausās TCP/IP protokolu, lai redzēt ACK + RESET paketes nav noteiktu apstiprinājumu, ka šī problēma rodas. Ja WinsockListenBacklog ir par zemu, dažas savienojuma mēģinājumi saņemt pieņemt paketes un daži savienojumi nekavējoties saņemt ACK + RESET paketes vienā laika periodā.Ņemiet vērā, ka ļoti retos gadījumos, iespējams, vajadzēs pielāgot pat tad, ja klienta datoros apvienošana ir iespējots šis iestatījums. Piemēram, ja daudzi klientdatoriem runājat vienā datorā, kurā darbojas SQL serveris, daudz vienlaicīgi ienākošo savienojuma izveides mēģinājumi var rasties jebkurā brīdī noteikta pat tad, ja ir iespējota apvienošanu.Piezīme. Ja jāiestata WinsockListenBacklog , jums nav lai šis iestatījums stātos spēkā, jārestartē sistēma Windows. Vienkārši pārtraukt un restartējiet SQL servera pakalpojuma iestatījums stātos spēkā. WinsockListenBacklog reģistra iestatījums ir paredzēts tikai datorā, kurā darbojas SQL serveris. Tā nav nekādas ietekmes uz jebkuru klienta datorā, kurā ir runāt ar SQL serveri.

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.