Masalahnya adalah koneksi ke RabbitMQ. Karena kami menggunakan sort live channels, fitur "auto-reconnect" dari RabbitMQ.Client menyimpan banyak status tentang saluran mati. Kami menonaktifkan konfigurasi ini, karena kami tidak memerlukan "tunjangan" dari fitur "koneksi ulang otomatis", dan semuanya mulai berfungsi normal. Itu menyebalkan, tetapi pada dasarnya kami harus menyiapkan penyebaran Windows dan melakukan proses analisis memori biasa dengan alat Windows (Jetbrains dotMemory dalam kasus ini). Menggunakan lldb sama sekali tidak produktif.
Penafian:Saya bukan .NET Wizard.
Tetapi Anda harus melakukan dua hal untuk mengikuti praktik terbaik Kubernetes:
-
Tentukan batas sumber daya yang masuk akal untuk aplikasi Anda. Jika aplikasi tidak membutuhkan lebih dari 200 MB memori, tentukan batas sumber daya untuk mencegah aplikasi menggunakan semua memori host yang tersedia. Namun perlu diketahui bahwa API Unix untuk mendapatkan memori yang tersedia tidak mampu memproses cgroup yang dimiliki proses tersebut dan selalu mengeluarkan memori host, apa pun yang dikatakan cgroup Anda.
-
Beri tahu aplikasi Anda berapa batas sumber daya ini. Sepertinya aplikasi Anda tidak "merasa perlu" untuk mengosongkan memori karena ada banyak memori. Hampir semua aplikasi, dan juga framework, memiliki tombol untuk menentukan memori maksimum yang akan digunakan. Beri tahu aplikasi Anda batas ini, dan itu akan "melihat" tekanan memori dan melakukan GC penuh (yang menurut saya bisa menjadi masalah di sini)