Pemutakhiran meningkatkan pialang layanan ketika Anda mengirim pesan ke server jauh di SQL Server 2012 dan SQL Server 2014

Pola dasar: Hotfix generik

BUG #: 185563 (pemeliharaan konten) VSTS: 1240830

Perbaikan Microsoft SQL Server 2012 Paket Layanan 1 (SP1) yang dirilis sebagai satu berkas yang dapat diunduh. Karena perbaikan bersifat kumulatif, setiap Edaran baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2012 SP1 edaran perbaikan.

Pendahuluan

Pemutakhiran ini memperkenalkan peningkatan pialang layanan SQL Server 2012 dan SQL Server 2014. Sebelum Anda menerapkan pembaruan ini, maksimum jumlah untaian yang menggunakan layanan perantara untuk mengirim pesan ke server jauh adalah jumlah CPU yang menjalankan layanan perantara ganda. Saat banyak server jauh dimatikan, untaian yang mengirim pesan ke server jauh menunggu waktu habis Winsock. Oleh karena itu, pengiriman pesan ke server jauh yang online tertunda saat maksimum jumlah untaian menunggu tercapai.

Pemecahan masalah

Setelah Anda menerapkan pembaruan ini, Anda juga perlu menghubungi dukungan Microsoft untuk membuat beberapa pengaturan khusus.
Sebelum pembaruan ini, SQL Server hanya membuat dua untaian per CPU fisik untuk menangani layanan Broker tugas. Pelacakan tiga berikut ini flags ditambahkan ke SQL Server 2012 kumulatif pemutakhiran 4 untuk SQL Server 2012 SP1. Hanya terakhir bendera pelacakan 8428 didukung di SQL Server 2014:

  • Bendera pelacakan 8426 - maksimum jumlah untaian akan jumlah CPU fisik dikalikan 8.

  • Bendera pelacakan 8427 - maksimum jumlah untaian akan jumlah CPU fisik dikalikan 16.

  • Bendera pelacakan 8428 - maksimum jumlah untaian akan jumlah CPU fisik dikalikan 32.

Catatan Bendera pelacakan ini harus dikonfigurasi sebagai parameter permulaan dan memerlukan restart SQL Server diterapkan.

Informasi pembaruan kumulatif

Masalah pertama kali diperbaiki dalam pemutakhiran kumulatif berikut SQL Server:

Setiap pembaruan kumulatif yang baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Kami sarankan Anda men-download dan menginstal pembaruan kumulatif terbaru untuk SQL Server:


Informasi lebih lanjut

Pelanggan skenario 1
Pelanggan memiliki aplikasi yang berjalan lama SQL Server layanan perantara (SSB) yang memiliki satu inisiator dan 1100 + target. Pelanggan di Afrika Selatan dan daya perusahaan yang melakukan pemadaman bergulir hampir setiap minggu. Jadi selalu ada beberapa target yang sedang dimatikan dan tidak dapat berkomunikasi. Sekitar 30-40 turun setiap saat. Ketika pemadaman menjadi tersebar dan di tempat di sekitar 100 + target turun, maka semua SSB pesan berhenti mengalir ke salah satu target.
Masalah menyelesaikan sendiri sebagai target yang cukup datang kembali online. Namun, yang dapat beberapa hari nanti.
Beberapa data awal menunjukkan sekarang SSB Profiler peristiwa terjadi selama waktu yang lama kecuali Perantara: sambungan.

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

Pelanggan skenario 2

Pelanggan memiliki inisiator di Moskow. Mereka memiliki 500 target di Moskow dan 3000 + target seluruh Rusia. Antara pukul 9 dan 7 pada mereka mematikan listrik, router, dan komputer untuk 3000 + target. Inisiator masih mencoba mengirim pesan ke target 500 yang cadangan dan pesan ke beberapa 3000 target yang sedang offline.

Pialang layanan menit setiap akan mencoba mengirim pesan dari sys.transmission_queue karena kami tidak menerima ACK dari target luring. Ketika kita memanggil WSPConnect, kita buka pencegahan dan menempati alur kerja setelah 20 detik. Pada komputer pelanggan ini membatasi ini untuk 32 untaian karena mereka memiliki inti lebih banyak daripada yang Anda. Sys.sysprocesses Anda dapat melihat sesi ini dengan waittype sebagai PREMPTIVE_WSASETLASTERROR. Apabila kita mencapai batas 32 ini juga penundaan mengirim pesan ke target 500 yang cadangan.

Contoh Stack Dump

Dalam skenario kedua, tumpukan ikuti diamati pada semua SSB tugas pegangan.
Ada 16 untaian dalam memori ini sama:
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 telah memastikan bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".

Referensi

Untuk informasi selengkapnya tentang Model pelayanan inkremental untuk SQL Server, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

935897 Model pelayanan inkremental tersedia dari tim SQL Server untuk memberikan hotfix untuk masalah yang dilaporkanUntuk informasi selengkapnya tentang skema penamaan untuk pemutakhiran SQL Server, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

Paket pemutakhiran 822499 memberi nama skema untuk perangkat lunak Microsoft SQL ServerUntuk informasi selengkapnya tentang terminologi pemutakhiran piranti lunak, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

824684 Deskripsi tentang terminologi standar yang digunakan untuk menjelaskan pembaruan perangkat lunak Microsoft

Penulis: wcarroll; jannaw
Penulis: v-fismao
Pemeriksa teknis: wcarroll; vinodmr; chwilkin; lvargas; jannaw; sqlprev
Editor: v-johnga

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×