Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 14553|Svare: 0

[Kommunikasjon] Problemet med SQL Server-brukertilkoblingsgrense

[Kopier lenke]
Publisert på 26.11.2014 15:11:08 | | | |

SQLSERVER-brukertilkoblinger

General StatisticsUser Connections for SQL-instansen i ytelsetelleren tilsvarer den

Du kan også se TCPv4Connections Established i ytelsesteller  


På en maskin med kun SQLSERVER-tjenesten,TCPV4-tilkoblinger etablert & Mssql UserConnectionsDisse to parameterne er i hovedsak synkroniserte og omtales som antall tilkoblinger i følgende testinnhold


Dette antallet tilkoblinger er begrenset, likt det maksimale antallet samtidige grenser. Når denne grensen nås, vil det føre til at forespørsler blir uresponsive selv om det finnes ledige CPU-, IO- og MEM-ressurser (noen, ikke alle spørringer påvirkes)

Den maksimale verdien av TCPV4 Connections Established & Mssql UserConnections avhenger av følgende faktorer
     a. Kompleksiteten til utførelsessetningen er relatert, jo mer kompleks setningen er, desto mindre er maksimalt antall tilkoblinger (denne effekten er svært viktig)
     b. Den er relatert til trådens samtidighet i forespørselen,
10 prosesser, hver prosess åpner 5 000 tråder for å be om,VELG getdate()Uttalelsen er allerede forlatt når den når rundt 4000 (slik jeg forstår det er at selv om mange tråder ikke har bedt om ressurser, er antallet forespørsler stort, noe som også har en innvirkning).
10 prosesser, hver prosess åpner 1000 tråder for å be om, VELG getdate()Kontoutskrifter kan nå mer enn 10 000.
    c. Det er relatert til hyppigheten av trådforespørsler
Hvis hver tråd kjører en spørring og pauser i 0–10 000 millisekunder, vil den ta opp færre tilkoblinger enn om den ikke er suspendert
    d. I testen ble det også funnet at noen ulukkede forbindelser ville føre til at telleren ble oppblåst, noe som ikke ble diskutert
10 prosesser, hver prosess åpner 1000 forespørselstråder, pauser tilfeldig (0 til 10 sekunder) etter hver spørring på serveren. Testresultatene er som følger:
Gjennomføring:VELG * FRA [system]. [dbo]. [DBA_alert]setningen (denne spørringen returnerer 200 linjer, og maksimalt antall tilkoblinger er 700 og problemet begynner å oppslås)
Når antallet tilkoblinger når 700, begynner noen feil å bli rapportert, og ved 1200 begynner et stort antall feil å dukke opp, og antallet forbindelser rundt 1800 står fast og øker ikke lenger. Feil og trege forbindelser er rikelig
Gjennomføring:VELG getdate()Setningstid(Maksimalt antall tilkoblinger er 3500, og problemet starter)
Når antallet tilkoblinger når 3500, begynner noen av dem å rapportere feil, og det høyeste trykket når rundt 11 000, og antallet tilkoblinger øker fortsatt sakte. Feil og trege tilkoblingsutblåsninger

Konklusjonen er: under gitte trykkforhold: det enkleste å utføreMaksimalt antall tilkoblinger kan være opptil 3500 når SELECT getdate(), og kjører SELECT * FROM [system]. [dbo]. [DBA_alert]-setningen, kan maksimalt antall tilkoblinger bare være opptil 700. Spørringstimeout oppstår når CPU, IO og MEM alle har et stort antall inaktive ressurser.
I produksjonsmiljøet kan ikke presset fra 10*1000 tråder nås, men SQL vil være mer komplekst enn testmiljøet.

Samtidig nummerFlaskehalsen skyldes ikke båndbredden til datamaskinen eller servernettverket mitt
For å bevise det ovennevnte. Jeg gjorde følgende tester, exec dbo.run2 ved stor samtidighet;

ALTER proc [dbo]. [run2]
som
Sett nocount på
velg getdate()
Erklær @i int
sett @i=0
mens @i<1000 Når denne verdien er 1000, er det maksimale antallet tilkoblinger omtrent 1300, og når denne verdien er 10, er det normalt å nå 5000.
Begynn
    INSERT INTO [pubs]. [dbo]. [tb_test] ([navn]) verdier (newid())
    sett @i=@i+1
slutt



Antall endringssykluser vil ikke påvirke returresultatet, det vil si at presset på nettverkskorttrafikken er det samme, men den ene vil raskt gå ut og den andre kan alltid kontrolleres, slik at båndbredden til nettverkskortene på begge sider kan elimineres.


Feilinnhold når det maksimale antallet tilkoblinger stoppes:




Netstat – et resultat når maksimalt antall tilkoblinger sitter fast (sterkt etablert):





Testprogram kjørende diagram når maksimalt antall tilkoblinger er stoppet:



Det er verdt å merke seg:Forbindelsen med feil eller timeouts er ikke jevn, og vil være konsentrert i noen prosesser, det vil si at noen prosesser alltid kan kjøre normalt, og den andre delen vil rapportere feil i lang tid (det har ingenting med startrekkefølgen på prosessene å gjøre, slik jeg forstår det har noen prosesser ressurser, kan fortsette å fungere normalt, mens andre prosesser i trådene i de opprinnelige ressursene er preempt og ikke kan søke om nye ressurser, og vil fortsette å rapportere feil gjentatte ganger). Som vist i figuren over, begynte den andre og 7. prosessen å få mange timeouts, og andre prosesser fortsatte å fungere. På serveren kan spørringer vises som upåvirket eller mindre påvirket av noen maskiner, og noen maskiner er betydelig påvirket.


Konklusjon: Selv om øvre grense for SQLSERVER-brukertilkoblinger er relatert til en rekke betingelser, er det fortsatt mulig å estimere og forutsi flaskehalsen. Når denne øvre grensen nås, vil det være et stort antall spørringer som er trege og tidsavbrudd (selv om CPU, IO. MEM, trafikk kan også forekomme når det finnes ledige ressurser). Faktisk vil endring av noen TCP-parametere øke denne øvre grensen, og jeg kan skrive tillegg senere





Foregående:【Entreprenørprosjekt】Wuhan Career Worry-Free Technology Co., Ltd. Rekrutteringsveileder på campus (Wuchang Institute of Technology)
Neste:Konfigurer Python til å få tilgang til SQLSserver under Redhat
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com