Batasan CPU untuk Application Pool di IIS 8

Fungsi penting dari setiap server web adalah kemampuan untuk membatasi penggunaan sumber daya CPU oleh situs tertentu, jika tidak satu situs dapat memonopoli sumber daya CPU, yang mungkin tidak dapat diterima, terutama untuk server hosting web yang berbagi sumber daya antara beberapa klien dengan situs yang berbeda. Masuk IIS (Layanan Informasi Internet) 7.0 dan versi sebelumnya, ada kemampuan untuk memonitor penggunaan CPU oleh aplikasi web dan memutuskan kumpulan aplikasi selama beberapa menit yang melebihi batas yang ditentukan. Kemampuan penuh untuk mengontrol konsumsi sumber daya CPU yang tersedia untuk setiap kumpulan aplikasi hanya muncul di IIS 8.0 (Windows Server 2012 dan lebih tinggi). Fitur ini disebut Throttling CPU dan alih-alih menghentikan sementara kumpulan aplikasi yang terlalu agresif untuk prosesor, memungkinkan Anda untuk mengatur jumlah maksimum sumber daya CPU yang tersedia untuk setiap kumpulan IIS.

Pada artikel ini, kami akan menunjukkan cara membatasi penggunaan CPU kumpulan aplikasi di IIS 8 (dan lebih tinggi) menggunakan contoh server web berbasis Windows Server 2012.

Buka konsol Manajer Layanan Informasi Internet (IIS) (% systemroot% \ system32 \ inetsrv \ iis.msc), perluas server Anda di pohon dan pilih bagian Kolam aplikasi. Pengaturan pelambatan CPU di IIS terletak di bagian parameter masing-masing kelompok.

Kiat. Sehingga untuk setiap situs yang berjalan di IIS, Anda dapat menetapkan batas CPU Anda sendiri, Anda perlu membuat App Pool Anda sendiri untuk setiap situs.
  • Jika Anda perlu mengaktifkan pembatasan untuk kumpulan tertentu, pilih di daftar dan pergi ke bagian pengaturan Pengaturan lanjutan.
  • Jika Anda perlu menetapkan batas default untuk semua kumpulan, pilih bagian Tetapkan Default Aplikasi Pool.

Di jendela pengaturan Pengaturan lanjutan kami tertarik pada parameter yang ditentukan di bagian CPU:

  • Batasi - % Waktu prosesor maksimum yang dapat digunakan kumpulan aplikasi. Jika nilai ini terlampaui, tindakan yang ditentukan dalam bidang Batas dilakukan. Dalam IIS 8 persen ditentukan dalam seperseribu (1/1000 persen). Misalnya, untuk membatasi konsumsi CPU hingga 20%, Anda harus menetapkan 20.000 di bidang Batas. Dalam IIS 8.5, nilainya ditentukan dalam persen biasa. Anda dapat menonaktifkan batas penggunaan dengan menetapkan 0
  • Batasi tindakan - tindakan yang dilakukan dengan kumpulan ketika batas penggunaan CPU terlampaui
  • Batas Interval (menit) - frekuensi memeriksa dan mengatur ulang hasil unduhan saat alur kerja dijeda. Parameter ini tidak digunakan untuk CPU Throttling, dan digunakan untuk kompatibilitas dengan versi IIS sebelumnya..

Kiat. Pengaturan ini hanya berlaku untuk pengguna yang menjalankan pool. Secara default, setiap kumpulan diluncurkan dari bawah akunnya, dengan demikian, beban masing-masing kumpulan diatur secara individual. Jika Anda menggunakan akun khusus untuk menjalankan beberapa kumpulan, maka pengaturannya akan sama.

Di bidang Limit Action, Anda dapat memilih salah satu tindakan berikut yang akan dilakukan ketika batas yang ditentukan terlampaui.

  • NoAction - tidak ada tindakan yang diambil, dan kejadian CPU overrun dicatat dalam log
  • Killw3wp (Matikan proses pekerja) - alur kerja kumpulan yang telah melampaui batas ditangguhkan untuk waktu yang ditentukan dalam bidang Interval Batas. Entri yang sesuai ditambahkan ke log..
  • Throttle - pembatasan ketat sumber daya CPU yang tersedia dengan nilai yang ditentukan dalam bidang Batas. Nilai bidang Batas dalam kasus ini diabaikan, dan suatu peristiwa ditulis ke log.
  • ThrottleUnderLimit - pembatasan hanya berfungsi pada beban server tinggi. Di hadapan sumber daya CPU gratis, kumpulan dapat melebihi batas yang ditentukan.

Anda dapat mengkonfigurasi CPU Throttling dari baris perintah menggunakan utilitas appcmd. Misalnya, untuk mengatur kumpulan DefaultAppPool hingga batas 30% penggunaan CPU, Anda perlu menjalankan perintah:

% systemroot% \ system32 \ inetsrv \ appcmd set apppool DefaultAppPool /cpu.limitlinks0000 /cpu.action:Throttle

Anda dapat mengaktifkan pembatasan untuk semua kumpulan IIS sebagai berikut:

% systemroot% \ system32 \ inetsrv \ appcmd set config -section: system.applicationHost / applicationPools /applicationPoolDefaults.cpu.limit:10000 /cpu.action:Throttle / commit: apphost

Juga harus dicatat bahwa kontrol beban tidak hanya berlaku untuk proses utama, tetapi juga untuk semua anak perusahaan, jika ada.

Jadi, dalam IIS 8, ada kemungkinan regulasi yang fleksibel untuk memuat server dengan menjalankan aplikasi web. Tetapi Anda perlu memahami bahwa CPU Throttling hanya digunakan untuk membatasi beban CPU maksimum, tetapi tidak untuk cadangan daya CPU untuk aplikasi web.