Bagaimana cara membatasi memori yang digunakan oleh aplikasi di IIS?

17

Proses pekerja IIS mengambil banyak memori di server kami. Saya ingin membatasi memori yang dapat digunakan setiap aplikasi. Saya bingung apakah saya harus menetapkan batas pada Batas Memori Virtual, atau Batas Memori Pribadi. Setiap aplikasi di IIS kami ada di kumpulan aplikasinya sendiri.

Jika saya menetapkan batas memori pribadi ke 500MB dan batas memori virtual ke 3GB. Kapan pool aplikasi didaur ulang? Apakah akan didaur ulang setelah mencapai 500MB atau setelah mencapai 3GB.

Kishore
sumber
Di mana opsi 'Batas Memori Virtual' dan 'Batas Memori Pribadi' yang Anda bicarakan?
Kolonel Panic
1
@ColonelPanic Pada IIS7.5, mereka berada di bawah bagian kumpulan aplikasi Advanced Settings -> Recycling.
ngm

Jawaban:

16

IIS akan menghormati kedua batasan itu.

Jika Anda menetapkan batas byte pribadi 500MB, segera setelah proses pekerja mencoba untuk melakukan 501MB, IIS akan memunculkan proses pekerja baru dan membunuh yang lama.

Jika Anda menetapkan batas memori virtual 3GB, segera setelah proses pekerja mencoba untuk memesan 3.001GB, IIS akan memunculkan proses pekerja baru dan membunuh yang lama.

Jika Anda menggunakan platform 64bit, Anda harus menyadari bahwa memori virtual aplikasi ASP.NET agresif. Sebagai contoh, saya memiliki aplikasi di pertanian yang hanya menggunakan 88MB byte pribadi, tetapi ukurannya 5,4GB Ukuran Virtual saat ini. Saya percaya reservasi memori virtual adalah fungsi dari RAM fisik di server. Penting juga untuk dipahami bahwa pada platform 64bit, pemesanan sebagian besar memori virtual tidak memiliki dampak kinerja yang nol.

Pada dasarnya, jika Anda mengalami masalah konsumsi memori pada server IIS, pengaturan yang ingin Anda batasi adalah Private Memory / Bytes, ini yang sesuai dengan penggunaan memori yang sebenarnya.

Dominic D
sumber
Terima kasih Dominic, Apakah ada cara kita dapat mengatur proses untuk menggunakan memori pribadi 500MB dan setelah melewati batas itu, mulailah menggunakan memori virtual pada disk tanpa daur ulang?
kishore
2
Bukannya aku sadar. Dalam aplikasi ASP.NET setelah Anda mulai memiliki masalah byte komitmen, pada dasarnya Anda memiliki 3 opsi. 1. Daur ulang proses saat Anda mencapai batas atau malam pada jam tidak aktif (jelas tidak disukai, dan jangan lupa mengelola data sesi dengan benar jika didaur ulang selama jendela penggunaan) 2. Dapatkan memori fisik tambahan untuk aplikasi (tambahkan RAM ke server farm, atau pindah ke farm berbeda, ini bisa menjadi solusi paling sederhana tergantung pada situasi Anda). 3. Modifikasi aplikasi sehingga menggunakan memori lebih efisien. (Pilihan terbaik, tetapi mungkin sulit untuk diterapkan)
Dominic D
Saya juga memperhatikan reservasi memori yang agresif di beberapa aplikasi ASP.NET. Adakah yang bisa merekomendasikan beberapa sumber yang bagus tentang topik ini untuk dipelajari? Saya ingin lebih memahami tentang bagaimana dan mengapa itu terjadi ... Yang saya amati adalah semakin banyak memori yang tersedia, semakin banyak memori yang dialokasikan aplikasi.
Tom Pažourek