Bagikan melalui


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.

ServiceMode

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.