Aktualizacja zwiększa Service Broker podczas wysyłania wiadomości do zdalnych serwerów SQL Server 2012 i 2014 serwera SQL

Szablonu: Poprawka ogólna

Nr błędu: 185563 (Obsługa zawartości) programu VSTS: 1240830

Poprawki w dodatku Service Pack 1 (SP1) dla systemu Microsoft SQL Server 2012 są wydane jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2012 SP1 Release.

Wprowadzenie

W tej aktualizacji wprowadzono ulepszenie Service Broker w programu SQL Server 2012 i SQL Server 2014. Przed zastosowaniem tej aktualizacji, maksymalną liczbę wątków, które Usługa Service Broker używa do wysyłania wiadomości do zdalnych serwerów jest dwa razy liczbę procesorów, które działają Service Broker. Wyłączy wielu zdalnych serwerów, tematy, które wysyłają wiadomości do zdalnych serwerów poczekaj Winsock przekroczenia limitu czasu. W związku z tym dostarczanie wiadomości do zdalnych serwerów, które są w trybie online jest opóźnione, gdy zostanie osiągnięta maksymalna liczba wątków oczekujących.

Rozwiązanie

Po zastosowaniu tej aktualizacji, należy skontaktować się z pomocy technicznej firmy Microsoft, aby niektóre określone ustawienia.
Przed zainstalowaniem aktualizacji program SQL Server tworzone tylko dwa wątki każdego fizycznego Procesora do obsługi Service Broker zadań. Następujące trzy śledzenia flagi zostały dodane do programu SQL Server 2012 Zbiorcza aktualizacja 4 dla programu SQL Server 2012 z dodatkiem SP1. Tylko ostatni flagi śledzenia 8428 jest obsługiwane w programie SQL Server 2014:

  • Numer fizycznego Procesora pomnożoną przez 8 jest 8426 flagi śledzenia - maksymalna liczba wątków.

  • Numer fizycznego Procesora pomnożoną przez 16 jest 8427 flagi śledzenia - maksymalna liczba wątków.

  • Numer fizycznego Procesora pomnożoną przez 32 jest 8428 flagi śledzenia - maksymalna liczba wątków.

Uwaga Te flagi śledzenia muszą być skonfigurowane jako parametry startowe i wymaga ponownego uruchomienia programu SQL Server zostały wprowadzone.

Informacje dotyczące zbiorczej aktualizacji

Ten problem został po raz pierwszy rozwiązany w następujących aktualizacji zbiorczej programu SQL Server:

Każda nowa aktualizacja zbiorcza dla programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały zawarte w poprzedniej zbiorczej aktualizacji. Firma Microsoft zaleca, aby pobrać i zainstalować najnowsze aktualizacje zbiorcze dla programu SQL Server:


Więcej informacji

Scenariusz klienta 1
Klient ma długim aplikacji SQL Server Service Broker (SSB), która ma jednego inicjatora i 1100 + cele. Klient jest w Republice Południowej Afryki i firma zasilania robi zaciemnienia toczenia prawie co tydzień. Tak więc zawsze są niektóre cele, które są w dół i nie może komunikować się. 30-40 w dół przez cały czas. Podczas rozprzestrzeniania się utraty przytomności i gdzieś wokół ponad 100 obiektów docelowych go w dół, a następnie SSB wszystkie komunikaty stop biegnie docelowych.
Problem sprowadza się tak szybko, jak tylko tyle cele powróci do. Może to jednak kilka dni później.
Kilka początkowych danych zawiera teraz SSB Profiler zdarzenia występujące w długim okresie czasu z wyjątkiem Broker: połączenie.

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

Scenariusz klienta 2

Klient ma inicjatora w Moskwie. Mają one 500 obiektów docelowych w Moskwie i cele 3000 + całej Rosji. Między 21: 00 a 07: 00 wyłączyli energii elektrycznej, routerów i na komputerach docelowych 3000 +. Inicjator nadal próbuje wysłać wiadomości do 500 obiektów docelowych, które są do góry i wiadomości do niektórych 3000 obiektów docelowych, które są w trybie offline.

Co minutę usługa service broker będzie próbował wysłać wiadomość z sys.transmission_queue, ponieważ nie Otrzymaliśmy potwierdzenie od celów offline. Nazywamy WSPConnect, możemy przejść cenią sobie wcześniejsze i zajmować wątek roboczy po 20 sekundach. Na tym komputerze klienci odnosi się to do 32 wątków mają więcej rdzeni niż użytkownik. W sys.sysprocesses można zobaczyć te sesje z Typ_oczekiwania jako PREMPTIVE_WSASETLASTERROR. Po trafieniu limitu 32, spowoduje to opóźnienie również wysyłanie wiadomości do 500 obiektów docelowych, które są do góry.

Przykładowy zrzut stosu

W obu scenariuszach stosu follow zaobserwowano na wszystkich SSB zadania obsługi.
W tym samym stosu są 16 wątków:
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)

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Powiązane artykuły

Aby uzyskać więcej informacji o przyrostowych modelu obsługi programu SQL Server kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

935897 przyrostowe modelu obsługi jest dostępne z zespołu programu SQL Server do dostarczania poprawki dla problemów zgłoszonychAby uzyskać więcej informacji na temat schematu nazewnictwa dla aktualizacji programu SQL Server kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

822499 schemat nazewnictwa dla oprogramowania Microsoft SQL Server pakietów aktualizacjiAby uzyskać więcej informacji dotyczących terminologii aktualizacji oprogramowania kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft

Autor: wcarroll; jannaw
Scenariusz: v-fismao
Weryfikacja tech.: wcarroll; vinodmr; chwilkin; lvargas; jannaw; sqlprev
Redaktor: v-johnga

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×