Oppdateringen forbedrer Service Broker når du sender meldinger til eksterne servere i 2012 for SQL Server og SQL Server-2014

Mal: Generell hurtigreparasjon

Feil #: 185563 (Innholdsvedlikehold) VSTS: 1240830

Hurtigreparasjoner for Microsoft SQL Server 2012 Service Pack 1 (SP1) gis ut som én nedlastbar fil. Fordi reparasjonene er kumulative, inneholder hver nye utgivelse alle hurtigreparasjonene og sikkerhetsreparasjonene som var inkludert i tidligere SQL Server 2012 SP1 løser utgivelsen.

Introduksjon

Denne oppdateringen inneholder en forbedring til Service Broker i 2012 for SQL Server og SQL Server-2014. Før du installerer denne oppdateringen, er det maksimale antallet tråder som brokeren som tjenesten bruker til å sende meldinger til eksterne servere doble antallet prosessorer som kjører Service Broker. Når du slår mange eksterne servere, vente tråder som sender meldinger til eksterne servere for Winsock-tidsavbrudd. Derfor utsettes levering av meldinger til eksterne servere som er tilkoblet når maksimalt antall tråder som venter, er nådd.

Oppløsning

Når du har installert denne oppdateringen, må du også kontakte Microsoft Kundestøtte for å gjøre noen spesifikke innstillinger.
Før denne oppdateringen opprettes SQL Server det bare to tråder per fysiske CPU til å håndtere Broker serviceoppgaver. Følgende tre sporingen flagg ble lagt til i SQL Server 2012 kumulativ oppdatering 4 for SQL Server 2012 SP1. Bare det siste sporingsflagget 8428 støttes i SQL Server-2014:

  • Trace flagget 8426 - det maksimale antallet tråder som vil være antall fysiske CPU multiplisert med 8.

  • Trace flagget 8427 - det maksimale antallet tråder som vil være antall fysiske CPU multiplisert med 16.

  • Trace flagget 8428 - det maksimale antallet tråder som vil være antall fysiske CPU multiplisert med 32.

Obs! Disse spor flaggene må være konfigurert som oppstartsparameterne og krever en omstart av SQL Server skal tre i kraft.

Informasjon om kumulativ oppdatering

Problemet ble først løst i følgende kumulative oppdateringer for SQL Server:

Hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som fulgte med den forrige kumulative oppdateringen. Vi anbefaler at du laster ned og installerer de nyeste kumulative oppdateringene for SQL Server:


Hvis du vil ha mer informasjon

Kunden Scenario 1
Kunden har et program for langvarige SQL Server Service Broker (SSB) som har én initiatoren og 1100 + mål. Kunden er i Sør-Afrika og strøm firmaet gjør rullende strømbrudd nesten hver uke. Det finnes det alltid noen mål som er nede og kan ikke kommunisere. Omtrent 30-40 ned til alle tider. Når forekommer bli omfattende og et sted rundt 100 + mål går ned, og deretter alle SSB meldinger slutte å flyte til ett av målene.
Problemet løser seg selv så snart nok mål kommer igjen. Det kan imidlertid være flere dager senere.
Noen av de opprinnelige dataene viser nå SSB Profiler hendelser over lang tid bortsett fra Broker: tilkobling.

ON INITIATOR PROFILER TRACE
===================================

Only Broker:Connection events, no other Broker activity.

Count Name SubClass_Name subclass_value

------- ----------------------- ----------------------- --------------

335942 Broker:Connection Accept 6

335942 Broker:Connection Connected 2

335942 Broker:Connection Connecting 1

335942 Broker:Connection Receive IO Error 8

335942 Broker:Connection Closed 5

335942 Broker:Connection Closing 4

335942 Broker:Connection Connect Failed 3

335942 Broker:Connection Send IO Error 7

Reviewed ***sys.dm_broker_connections***

1907 Rows

All rows with state_desc = CONNECTED, have a login_state_desc = WAIT LOGIN NEGOTIATE

All rows with state_desc = CONNECTING, have a login_state_desc = INITIAL

Count state_desc login_state_desc

563 CONNECTING INITIAL

1345 CONNECTED WAIT LOGIN NEGOTIATE

sys.transmission_queue

As many as 513 Transmissions with the following errors:

Connection attempt failed with error: '10060(A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)'.

Connection attempt failed with error: '10061(No connection could be made because the target machine actively refused it.)'.

Connection_Endpoint State Counts

GroupCnt state_desc

----------- ------------------------------------------------------------

2571 CONVERSING
1 ERROR

Kunden Scenario 2

Kunden har en initiator i Moskva. De har 500 målene i Moskva og 3000 + mål over hele Russland. De slår av elektrisitet, rutere og datamaskiner for målene i 3000 + mellom 21: 00 og 07: 00. Initiatoren fremdeles prøver å sende meldinger til 500-mål som er opp og meldinger til noen av de 3000 målene som er frakoblet.

Hvert minutt service broker vil prøve å sende meldingen fra sys.transmission_queue fordi vi ikke har mottatt en Bekreftelse fra de frakoblede mål. Når vi kaller WSPConnect, vil vi gå preemptive og oppta en arbeidstråd etter 20 sekunder. På denne datamaskinen for kunder begrenser det dette 32 tråder som de har flere kjerner enn deg. Du kan se disse øktene med en waittype som PREMPTIVE_WSASETLASTERROR i sys.sysprocesses. Når vi treffer grensen på 32 forsinker dette også sende meldinger til 500-mål som er opp.

Eksempel stakk dumpet

I begge scenariene ble følger stakken observert på alle SSB oppgave-behandlingsprogrammer.
Det er 16 tråder i denne samme bunke:
16 threads [stats]: 42 44 46 47 52 56 58 59 60 61 ... 000000007731135a ntdll!ZwWaitForSingleObject+0xa (e:\obj.amd64fre\minkernel\ntdll\daytona\objfre\amd64\usrstubs.asm @ 180)
000007fefca41e35 mswsock!SockWaitForSingleObject+0xe145
000007fefca411b9 mswsock!SockDoConnectReal+0xb329
000007fefca35e30 mswsock!SockDoConnect+0x32f (d:\w7rtm\minio\sockets\winsock2\wsp\mswsock\msafdlib\connect.c @ 1710)
000007fefca35bca mswsock!WSPConnect+0x2a (d:\w7rtm\minio\sockets\winsock2\wsp\mswsock\msafdlib\connect.c @ 222)
000007fefdb2466c ws2_32!connect+0xac (d:\w7rtm\minio\sockets\winsock2\ws2_32\src\sockctrl.cpp @ 198)
000000000245d1b5 sqlservr!Tcp::SocketOpenSync+0x5c9 (e:\sql10_main_t\sql\ntdbms\sni\src\tcp.cpp @ 3944)
000000000245d777 sqlservr!Tcp::Open+0x47b (e:\sql10_main_t\sql\ntdbms\sni\src\tcp.cpp @ 4097)
00000000024438c3 sqlservr!SNIOpenSync+0x623 (e:\sql10_main_t\sql\ntdbms\sni\src\sni.cpp @ 2523)
000000000138d84e sqlservr!CConnectionEndpoint::AsyncConnect+0xc52 (e:\sql10_main_t\sql\ntdbms\broker\src\ssbconendpointopen.cpp @ 828)
000000000138bb55 sqlservr!CEndPointConnectTask::IdempotentInvoke+0x15 (e:\sql10_main_t\sql\ntdbms\broker\src\ssbconendpointopen.cpp @ 69)
00000000014418cf sqlservr!CSbTaskManager::HandleReusableTask+0x247 (e:\sql10_main_t\sql\ntdbms\broker\src\ssbtask.cpp @ 1337)
000000000144089a sqlservr!CSbTask::TaskStart+0x412 (e:\sql10_main_t\sql\ntdbms\broker\src\ssbtask.cpp @ 686)
0000000001440442 sqlservr!CSbTask::BeginTaskStart+0x1a (e:\sql10_main_t\sql\ntdbms\broker\src\ssbtask.cpp @ 564)
000000000079b450 sqlservr!SOS_Task::Param::Execute+0x12a (e:\sql10_main_t\sql\common\dk\sos\include\sos.inl @ 10347)
000000000079b116 sqlservr!SOS_Scheduler::RunTask+0x96 (e:\sql10_main_t\sql\common\dk\sos\src\scheduler.cpp @ 919)
000000000079af5b sqlservr!SOS_Scheduler::ProcessTasks+0x128 (e:\sql10_main_t\sql\common\dk\sos\src\scheduler.cpp @ 800)
00000000008d44fa sqlservr!SchedulerManager::WorkerEntryPoint+0x2d2 (e:\sql10_main_t\sql\common\dk\sos\src\node.cpp @ 1801)
00000000008d47dd sqlservr!SystemThread::RunWorker+0xcc (e:\sql10_main_t\sql\common\dk\sos\include\worker.inl @ 789)
0000000000d1c0cd sqlservr!SystemThreadDispatcher::ProcessWorker+0x2db (e:\sql10_main_t\sql\common\dk\sos\src\node.cpp @ 449)
00000000008d53d2 sqlservr!SchedulerManager::ThreadEntryPoint+0x173 (e:\sql10_main_t\sql\common\dk\sos\src\node.cpp @ 1999)
00000000738137d7 msvcr80!_callthreadstartex+0x17 (f:\dd\vctools\crt_bld\self_64_amd64\crt\src\threadex.c @ 348)
0000000073813894 msvcr80!_threadstartex+0x84 (f:\dd\vctools\crt_bld\self_64_amd64\crt\src\threadex.c @ 326)
00000000770b652d kernel32!BaseThreadInitThunk+0xd (d:\win7sp1_gdr\base\win32\client\thread.c @ 65)
00000000772ec521 ntdll!RtlUserThreadStart+0x1d (d:\win7sp1_gdr\minkernel\ntos\rtl\rtlexec.c @ 3185)

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Referanser

For mer informasjon om trinnvis Vedlikehold modellen for SQL Server, kan du klikke følgende artikkelnummer for å gå til artikkelen i Microsoft Knowledge Base:

935897 en trinnvis Vedlikehold modell er tilgjengelig fra SQL Server-teamet å levere hurtigreparasjoner for rapporterte problemerHvis du vil ha mer informasjon om navngivingspraksis for SQL Server-oppdateringer, kan du klikke følgende artikkelnummer for å gå til artikkelen i Microsoft Knowledge Base:

822499 Naming skjema for Microsoft SQL Server-programvare for oppdateringspakkerHvis du vil ha mer informasjon om terminologi for programvareoppdatering, klikker du artikkelnummeret nedenfor for å gå til artikkelen i Microsoft Knowledge Base:

824684 beskrivelse av standardterminologien som brukes til å beskrive oppdateringer av Microsoft-programvare

Forfatter: wcarroll; jannaw
Tekstforfatter: v-fismao
Teknisk redaktør: wcarroll; vinodmr; chwilkin; lvargas; jannaw; sqlprev
Redaktør: v-johnga

Trenger du mer hjelp?

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Microsoft Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×