Rumah > pembangunan bahagian belakang > Golang > Mengapa 1.3 Tidak Keluarkan Memori Pelayan Kembali ke Sistem Selepas Pancang Sambungan?

Mengapa 1.3 Tidak Keluarkan Memori Pelayan Kembali ke Sistem Selepas Pancang Sambungan?

Susan Sarandon
Lepaskan: 2024-12-30 06:38:09
asal
281 orang telah melayarinya

Why Doesn't Go 1.3 Release Server Memory Back to the System After a Connection Spike?

Go 1.3 garbage collector tidak melepaskan memori pelayan kembali ke sistem

Pelayan yang dibangunkan untuk memeriksa jejak memori menunjukkan turun naik memori RES walaupun dijangka keluaran memori selepas peningkatan dalam sambungan. Isu ini timbul disebabkan oleh pengehadan pengumpul sampah Go dalam melepaskan memori timbunan serta-merta dan ketidakbolehaksesan memori tindanan goroutine ke OS. Panggilan sistem yang tersedia dalam sistem seperti Unix untuk melepaskan bahagian timbunan yang tidak digunakan tidak tersedia pada Windows, menyebabkan penggunaan memori maya yang berpotensi lebih besar.

Pada mulanya, pelayan bermula dengan jejak memori kecil. Semasa nadi awal 10,000 sambungan, penggunaan memori meningkat kepada kira-kira 60MB (seperti yang ditunjukkan oleh saiz RES dalam "atas"). Apabila nadi berakhir, penggunaan ingatan berkurangan. Walau bagaimanapun, saiz RES kekal dinaikkan pada 56MB, manakala memori dalam penggunaan tidak pernah jatuh di bawah 60MB.

Semasa pemungut sampah Go mengeluarkan memori timbunan, ia tidak segera mengembalikannya ke sistem. Proses ini mungkin mengambil masa sehingga tujuh minit selepas sapuan GC. Selain itu, memori yang diperuntukkan kepada susunan goroutine tidak pernah dikeluarkan kepada OS. Ini menyumbang kepada penggunaan memori tinggi yang berterusan yang diperhatikan dalam pelayan.

Malangnya, tiada penyelesaian yang jelas untuk isu ini dalam Go versi 1.3. Walau bagaimanapun, keadaan dijangka bertambah baik dalam keluaran berikutnya. Untuk mengurangkan kesan, pertimbangkan langkah berikut:

  • Paksa kutipan sampah secara berkala menggunakan masa jalan.GC().
  • Tetapkan had pada bilangan sambungan yang boleh diterima oleh pelayan untuk menghalang penggunaan memori yang berlebihan.

Atas ialah kandungan terperinci Mengapa 1.3 Tidak Keluarkan Memori Pelayan Kembali ke Sistem Selepas Pancang Sambungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan