Cara memecahkan masalah konektivitas dan pengiriman pesan
Panduan ini memperkenalkan beberapa cara untuk membantu melakukan diagnosis diri untuk menemukan akar penyebabnya secara langsung atau mempersempit masalah. Hasil diagnosis diri juga berguna ketika melaporkannya kepada kami untuk penyelidikan lebih lanjut.
Pertama, Anda perlu memeriksa dari portal Azure di mana ServiceMode adalah Azure SignalR Service (juga dikenal sebagai ASRS) dikonfigurasi.
Untuk mode
Default
, lihat pemecahan masalah mode defaultUntuk mode
Serverless
, lihat pemecahan masalah mode tanpa serverUntuk mode
Classic
, lihat pemecahan masalah mode klasik
Kedua, Anda perlu mengambil jejak layanan untuk memecahkan masalah. Untuk cara mengambil jejak, lihat Cara mengambil jejak layanan.
Mengalami masalah atau umpan balik tentang pemecahan masalah? Beri tahu kami.
Cara mengambil jejak layanan
Untuk menyederhanakan proses pemecahan masalah, Azure SignalR service menyediakan alat lacak langsung untuk mengekspos jejak layanan pada kategorikonektivitas and olahpesan. Jejak termasuk tetapi tidak terbatas pada peristiwa yang terhubung/terputus koneksi dan peristiwa yang diterima/ditinggalkan pesan. Dengan alat lacak langsung, Anda dapat mengambil, melihat, mengurutkan, memfilter, dan mengekspor jejak langsung. Untuk informasi selengkapnya, lihat Cara menggunakan alat pelacakan langsung.
Mengalami masalah atau umpan balik tentang pemecahan masalah? Beri tahu kami.
Pemecahan masalah mode default
Ketika ASRS berada dalam mode Default, ada tiga peran: Klien, Server, dan Layanan:
Klien: Klien adalah singkatan dari klien yang terhubung ke ASRS. Koneksi persisten yang menghubungkan klien dan ASRS disebut Koneksi Klien dalam panduan ini.
Server: Server adalah singkatan dari server yang melayani negosiasi klien dan host logika
Hub
SignalR. Dan koneksi persisten antara Server dan ASRS disebut Koneksi Server dalam panduan ini.Layanan: Layanan adalah nama pendek untuk ASRS dalam panduan ini.
Lihat Internal Azure SignalR Service untuk pengenalan terperinci dari seluruh arsitektur dan alur kerja.
Ada beberapa cara yang dapat membantu Anda mempersempit masalah.
Jika masalah terjadi tepat di jalan atau dapat direproduksi, cara lurus ke depan adalah dengan melihat lalu lintas yang sedang berlangsung.
Jika masalah sulit direproduksi, jejak dan log dapat membantu.
Cara melihat lalu lintas dan mempersempit masalah
Menangkap lalu lintas yang sedang berlangsung adalah cara paling lurus ke depan untuk mempersempit masalah. Anda dapat menangkap Jejak Jaringan menggunakan opsi yang dijelaskan di bawah ini:
Permintaan klien
Untuk koneksi persisten SignalR, pertama-tama /negotiate
ke server aplikasi yang dihosting dan kemudian dialihkan ke layanan SignalR Azure dan kemudian menetapkan koneksi persisten nyata ke layanan SignalR Azure. Lihat Internal LAzure SignalR Service untuk langkah-langkah lebih detail.
Dengan jejak jaringan sisi klien di tangan, periksa permintaan mana yang gagal dengan kode status dan respons apa, dan cari solusi di dalam Panduan Pemecahan Masalah.
Permintaan server
Server SignalR mempertahankan Koneksi Server antara Server dan Layanan. Saat server aplikasi dimulai, server web akan memulai koneksi WebSocket ke layanan SignalR Azure. Semua lalu lintas klien dirutekan melalui layanan SignalR Azure ke Koneksi Server ini dan kemudian dikirim ke Hub
. Ketika Koneksi Server turun, klien dirutekan ke Koneksi Server ini akan terpengaruh. Azure SignalR SDK kami memiliki logika "Always Retry" untuk menyambungkan kembali Koneksi ion Server dengan penundaan paling lama 1 menit untuk meminimalkan efeknya.
Koneksi Serverdapat turun karena ketidakstabilan jaringan atau pemeliharaan rutin Azure SignalR Service, atau pembaruan / pemeliharaan server aplikasi yang dihosting. Selama sisi klien memiliki mekanisme pemutusan/koneksi ulang, efeknya minimal seperti sisi klien yang menyebabkan pemutusan sambungan ulang.
Lihat jejak jaringan sisi server untuk menemukan kode status dan detail kesalahan mengapa Server Koneksi ion dihilangkan atau ditolak oleh Layanan. Cari akar penyebab di dalam Panduan Pemecahan Masalah.
Mengalami masalah atau umpan balik tentang pemecahan masalah? Beri tahu kami.
Cara menambah log
Log dapat berguna untuk mendiagnosis masalah dan memantau status yang sedang berjalan.
Cara mengaktifkan log pihak klien
Pengalaman pencatatan sisi klien persis sama seperti saat menggunakan SignalR yang dihosting sendiri.
Mengaktifkan pengelogan pihak klien untuk ASP.NET Core SignalR
Mengaktifkan pengelogan pihak klien untuk ASP.NET SignalR
Cara mengaktifkan log sisi server
Mengaktifkan pengelogan sisi server untuk ASP.NET Core SignalR
Pencatatan sisi server untuk ASP.NET Core SignalR
diintegrasikan dengan ILogger
yang berbasis pengelogan disediakan dalam kerangka kerja ASP.NET Core
. Anda dapat mengaktifkan pembuatan log sisi server dengan menggunakan ConfigureLogging
, contoh penggunaan sebagai berikut:
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConsole();
logging.AddDebug();
})
Kategori pencatat untuk Azure SignalR selalu dimulai dengan Microsoft.Azure.SignalR
. Untuk mengaktifkan log terperinci dari Azure SignalR, konfigurasikan awalan sebelumnya untuk Information
meratakan file appsettings.json Anda seperti di bawah ini:
{
"Logging": {
"LogLevel": {
...
"Microsoft.Azure.SignalR": "Information",
...
}
}
}
Periksa apakah ada log peringatan/kesalahan abnormal yang direkam.
Mengaktifkan jejak sisi server untuk ASP.NET SignalR
Saat menggunakan versi >SDK = 1.0.0
, Anda dapat mengaktifkan jejak dengan menambahkan yang berikut ke web.config
: (Detail)
<system.diagnostics>
<sources>
<source name="Microsoft.Azure.SignalR" switchName="SignalRSwitch">
<listeners>
<add name="ASRS" />
</listeners>
</source>
</sources>
<!-- Sets the trace verbosity level -->
<switches>
<add name="SignalRSwitch" value="Information" />
</switches>
<!-- Specifies the trace writer for output -->
<sharedListeners>
<add name="ASRS" type="System.Diagnostics.TextWriterTraceListener" initializeData="asrs.log.txt" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Periksa apakah ada log peringatan/kesalahan abnormal yang direkam.
Cara mengaktifkan log di dalam layanan SignalR Azure
Anda juga dapat mengaktifkan log diagnostik untuk layanan SignalR Azure, log ini memberikan informasi terperinci tentang setiap koneksi yang terhubung ke layanan SignalR Azure.
Mengalami masalah atau umpan balik tentang pemecahan masalah? Beri tahu kami.
Pemecahan masalah mode tanpa server
Ketika ASRS dalam mode Tanpa Server, hanya ASP.NET Core SignalR yang mendukung mode Serverless
, dan ASP.NET SignalR TIDAK mendukung mode ini.
Untuk mendiagnosis masalah konektivitas dalam mode Serverless
, cara yang paling lurus ke depan adalah dengan melihat lalu lintas sisi klien. Mengaktifkan log pihak klien dan log sisi layanan juga dapat membantu.
Mengalami masalah atau umpan balik tentang pemecahan masalah? Beri tahu kami.
Pemecahan masalah mode klasik
Classic
mode usang dan tidak dianjurkan untuk digunakan. Saat dalam mode Klasik, layanan Azure SignalR menggunakan server yang terhubung Koneksi ions untuk menentukan apakah layanan saat ini dalam default
mode atau serverless
mode. Mode klasik dapat menyebabkan masalah konektivitas klien perantara karena, ketika ada penurunan mendadak dari semua Koneksi ion Server yang terhubung, misalnya karena ketidakstabilan jaringan, Azure SignalR percaya sekarang beralih ke serverless
mode, dan klien yang terhubung selama periode ini tidak akan pernah dirutekan ke server aplikasi yang dihosting. Aktifkan log sisi layanan dan periksa apakah ada klien yang dicatat seolah-olah ServerlessModeEntered
Anda telah menghosting server aplikasi, namun, beberapa klien tidak pernah mencapai sisi server aplikasi. Jika Anda melihat salah satu klien ini, batalkan koneksi klien, lalu biarkan klien memulai ulang.
Pemecahan masalahclassic
konektivitas mode dan pengiriman pesan mirip dengan pemecahan masalah mode default.
Mengalami masalah atau umpan balik tentang pemecahan masalah? Beri tahu kami.
Kondisi layanan
Anda dapat memeriksa api kesehatan untuk kesehatan layanan.
Permintaan: DAPATKAN
https://{instance_name}.service.signalr.net/api/v1/health
Kode status respons:
- 200: sehat.
- 503: layanan Anda tidak sehat. Kamu bisa:
- Menunggu beberapa menit untuk pemulihan otomatis.
- Periksa alamat ip sama dengan ip dari portal.
- Atau mulai ulang instans.
- Jika semua opsi di atas tidak berfungsi, hubungi kami dengan menambahkan permintaan dukungan baru di portal Azure.
Lebih lanjut tentang pemulihan bencana.
Mengalami masalah atau umpan balik tentang pemecahan masalah? Beri tahu kami.
Langkah berikutnya
Dalam panduan ini, Anda mempelajari tentang cara memecahkan masalah konektivitas dan pengiriman pesan. Anda juga dapat mempelajari cara menangani masalah umum.