Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 14553|Atsakyti: 0

[Komunikatas] SQL serverio vartotojų ryšių dangtelio problema

[Kopijuoti nuorodą]
Paskelbta 2014-11-26 15:11:08 | | | |

SQLSERVER vartotojų ryšiai

Jį atitinka SQL egzemplioriaus bendrieji statistikos vartotojų ryšiai našumo skaitiklyje

Taip pat galite peržiūrėti TCPv4Connections Established našumo skaitiklyje  


Kompiuteryje, kuriame naudojama tik SQLSERVER paslauga,Užmegzti TCPV4 ryšiai && Mssql UserConnectionsŠie du parametrai iš esmės yra sinchronizuojami ir toliau pateiktame bandymo turinyje vadinami jungčių skaičiumi


Šis ryšių skaičius yra ribotas, panašus į maksimalų sutapimo limitų skaičių. Pasiekus šią ribą, užklausos nebereaguos, net jei yra laisvų procesoriaus, IO ir MEM išteklių (kai kurios, ne visos užklausos bus paveiktos)

Didžiausia TCPV4 Connections Established & Mssql UserConnections vertė priklauso nuo šių veiksnių
     a. Vykdymo pareiškimo sudėtingumas yra susijęs, kuo sudėtingesnis teiginys, tuo mažesnis maksimalus ryšių skaičius (šis efektas yra labai svarbus)
     b. Tai susiję su užklausos gijos sutapimu,
10 procesų, kiekvienas procesas atidaro 5 000 gijų,SELECT getdate()Pareiškimas jau atsisakoma, kai jis pasiekia apie 4000 (mano supratimu, nors daugelis temų neprašė išteklių, užklausų skaičius yra didelis, o tai taip pat turi įtakos).
10 procesų, kiekvienas procesas atidaro 1000 gijų užklausai, SELECT getdate()Pareiškimai gali siekti daugiau nei 10 000.
    c. Tai susiję su gijų užklausų dažnumu
Jei kiekviena gija paleidžia užklausą ir pristabdo 0–10 000 milisekundžių, ji užims mažiau ryšių nei tuo atveju, jei ji nebus sustabdyta
    d. Bandymo metu taip pat buvo nustatyta, kad kai kurios neuždarytos jungtys gali sukelti skaitiklio išpūtimą, o tai nebuvo aptarta
10 procesų, kiekvienas procesas atidaro 1000 užklausų gijų, atsitiktinai pristabdo (nuo 0 iki 10 sekundžių) po kiekvienos užklausos serveryje Testo rezultatai yra tokie:
Vykdymas:PASIRINKITE * FROM [sistema]. [DBO]. [DBA_alert]sakinys (ši užklausa pateikia 200 eilučių, o maksimalus ryšių skaičius yra 700 ir pradedama išduoti problema)
Kai ryšių skaičius pasiekia 700, pradedama pranešti apie kai kurias klaidas, o 1200 pradeda atsirasti daugybė klaidų, o jungčių skaičius apie 1800 įstrigo ir nebedidėja. Klaidų ir vangių ryšių yra daug
Vykdymas:SELECT getdate()Bausmės laikas(Maksimalus jungčių skaičius yra 3500 ir problema prasideda)
Kai jungčių skaičius pasiekia 3500, kai kurie iš jų pradeda pranešti apie klaidas, o didžiausias slėgis siekia apie 11000, o jungčių skaičius vis dar lėtai auga. Klaidos ir vangūs ryšio išpūtimai

Išvada tokia: esant tam tikroms slėgio sąlygoms: paprasčiausia atliktiMaksimalus jungčių skaičius gali būti iki 3500, kai SELECT getdate() ir vykdomas SELECT * FROM [system]. [DBO]. [DBA_alert] sakinį, maksimalus ryšių skaičius gali būti tik iki 700. Užklausos skirtasis laikas įvyksta, kai CPU, IO ir MEM turi daug nenaudojamų išteklių.
Gamybos aplinkoje neįmanoma pasiekti 10*1000 gijų slėgio, tačiau SQL bus sudėtingesnis nei bandymo aplinka.

Vienalaikis skaičiusKliūtis atsiranda ne dėl kompiuterio ar serverio tinklo plokštės pralaidumo
Norėdami įrodyti tai, kas išdėstyta aukščiau. Aš padariau šiuos testus, exec dbo.run2 didelio lygiagrečio atveju;

ALTER proc [dbo]. [run2]
kaip
Nustatyti NOCOUNT ON
Pasirinkite GetDate()
deklaruoti @i int
nustatyti @i=0
tuo tarpu @i<1000 Kai ši vertė yra 1000, maksimalus jungčių skaičius yra apie 1300, o kai ši vertė yra 10, normalu pasiekti 5000.
Pradėti
    ĮTERPTI Į [barai]. [DBO]. [tb_test] ([pavadinimas]) reikšmės (newid())
    nustatyti @i=@i+1
pabaiga

Eiti

Keitimo ciklų skaičius neturės įtakos grąžinimo rezultatui, tai yra, tinklo plokštės srauto slėgis yra vienodas, tačiau vienas greitai baigsis laikas, o kitas visada gali būti patikrintas, todėl tinklo plokščių pralaidumo poveikį abiejose pusėse galima pašalinti.


Klaidos turinys, kai sustabdytas maksimalus ryšių skaičius:




netstat-rezultatas, kai įstrigo maksimalus ryšio skaičius (stipriai nustatytas):





Patikrinkite programos veikimo schemą, kai užstrigo maksimalus jungčių skaičius:



Verta paminėti:Ryšys su klaidomis ar skirtuoju laiku nėra tolygus ir bus sutelktas į kai kuriuos procesus, tai yra, kai kurie procesai visada gali veikti normaliai, o kita dalis ilgą laiką praneš apie klaidas (tai neturi nieko bendra su procesų pradžios tvarka, mano supratimu, kai kurie procesai turi išteklių, gali toliau dirbti normaliai, o kiti procesai pradinių išteklių gijose yra užkirsti kelią ir negali kreiptis dėl naujų išteklių, nuolat praneš apie klaidas) Kaip parodyta aukščiau esančiame paveikslėlyje, 2 ir 7 procesai pradėjo turėti daug skirtųjų laikų, o kiti procesai toliau veikė. Serveryje užklausos gali būti nepaveiktos arba mažiau paveiktos kai kurių įrenginių, o kai kurie įrenginiai yra labai paveikti.


Išvada: Nors viršutinė SQLSERVER vartotojų ryšių riba yra susijusi su daugybe sąlygų, vis tiek įmanoma įvertinti ir numatyti kliūtį, kai ši viršutinė riba bus pasiekta, bus daug užklausų lėtai ir skirtasis laikas (nors CPU, IO. MEM, srautas taip pat gali atsirasti, kai yra nenaudojamų išteklių). Tiesą sakant, pakeitus kai kuriuos TCP parametrus, ši viršutinė riba padidės, ir vėliau galėsiu parašyti papildymus





Ankstesnis:【Verslumo projektas】 Wuhan Career Worry-Free Technology Co., Ltd. Įdarbinimo miestelio prižiūrėtojas (Wuchang technologijos institutas)
Kitą:Sukonfigūruokite Python, kad pasiektumėte SQLSserver naudodami Redhat
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com