Signalr: Kebocoran memori

Dibuat pada 2 Nov 2015  ·  9Komentar  ·  Sumber: SignalR/SignalR

Setelah 3 bulan signlar self host saya dijalankan, saya menemukan bahwa proses tersebut mendapatkan memori 1,5 gigabyte. Kami menggunakan signalr versi 2.1.1.
Saya memeriksanya dengan memori Dot dan saya menemukan bahwa Microsoft.AspNet.SignalR.Messaging.DefaultSubscription mendapatkan lebih banyak memori dan tidak melepaskan.

Apakah memori ini bocor?

Komentar yang paling membantu

Kedua untuk itu. Tampaknya mengisi memori dengan string seperti hc-Realtime.20e13545-e77c-4873-9d55-fe9c14e3a058
(panduan bervariasi berdasarkan contoh tentu saja), tetapi setelah beberapa menit pembuatan profil, saya memiliki beberapa ratus contoh string yang sama dengan yang ada di memori

memleak

tampaknya memori ini dipertahankan ketika klien terputus (setidaknya sebagian). Tetapi karena dalam skenario kami, klien terhubung untuk waktu yang agak lama (umumnya Anda bisa mengatakan 24/7), tekanan memori meningkat terus-menerus.

Semua 9 komentar

untitled

Kedua untuk itu. Tampaknya mengisi memori dengan string seperti hc-Realtime.20e13545-e77c-4873-9d55-fe9c14e3a058
(panduan bervariasi berdasarkan contoh tentu saja), tetapi setelah beberapa menit pembuatan profil, saya memiliki beberapa ratus contoh string yang sama dengan yang ada di memori

memleak

tampaknya memori ini dipertahankan ketika klien terputus (setidaknya sebagian). Tetapi karena dalam skenario kami, klien terhubung untuk waktu yang agak lama (umumnya Anda bisa mengatakan 24/7), tekanan memori meningkat terus-menerus.

Seberapa besar pesannya?

kami mencoba untuk membuatnya tetap kecil - dalam menjalankan terakhir, rata-rata 300 karakter (payload), dengan maksimal 1742 karakter (kami hanya mengirim string biasa, tidak ada json di sisi pemberi sinyal), terkadang muncul hingga mengatakan 5k

image

Saya tampaknya memiliki masalah yang sama (v2.2.0). Berjalan sekarang selama tiga hari, dan instance DefaultSubscription terus meningkat.

Kami mengalami masalah yang sama di sini. Bagaimana cara memperbaiki masalah seperti ini? (Kebocoran memori)

Profil dot trace asli itu terlihat mencurigakan. Mengapa ada begitu banyak instance bus pesan. Harus ada satu.

Kami melihat hal yang sama di sini. (v2.2.0)

Pengujian saya menunjukkan bahwa itu tampaknya terkait dengan memori yang disematkan yang tidak dapat dikumpulkan oleh GC. Saat aplikasi kami terpapar 1-2K pelanggan yang terhubung dalam waktu singkat, memori tampaknya disematkan dengan sangat cepat. Saya bahkan menerima beberapa OutOfMemoryExceptions di jam sibuk.

Ants profiler menunjukkan bahwa memori yang tidak terpakai yang dialokasikan ke .NET terus bertambah. Ini menunjuk ke array byte yang digunakan di Microsoft.AspNet.SignalR.Messaging.Message

ants_profile_signalrapp

Bagaimana kita bisa menghindari ini? Apakah mungkin untuk mengubah ukuran buffer awal atau ukuran potongan pesan melalui API atau sesuatu seperti itu?

Masalah ini telah ditutup sebagai bagian dari pembersihan masalah seperti yang dijelaskan di https://blogs.msdn.microsoft.com/webdev/2018/09/17/the-future-of-asp-net-signalr/. Jika Anda masih mengalami masalah ini, silakan buka kembali dan beri komentar untuk memberi tahu kami! Kami masih tertarik untuk mendengar dari Anda, backlog baru saja menjadi sedikit besar dan kami harus melakukan pembersihan massal untuk mendapatkan kembali di atas segalanya. Terima kasih atas umpan balik Anda yang berkelanjutan!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat