Batas CPU untuk Kolam Aplikasi di IIS 7.5

8

Saya melihat bahwa di iis 7.5 saya dapat menetapkan batas penggunaan CPU% untuk jumlah waktu tertentu untuk kumpulan aplikasi. Saya juga dapat meminta itu membunuh proses pekerja jika batas ini dilanggar. Jika disuruh melakukan ini, apakah proses pekerja akan dimulai lagi secara otomatis setelah terbunuh, atau diperlukan intervensi manual?

Lebih dari pada Stack Overflow ada disebutkan bahwa itu dapat dimulai kembali pada penyelesaian interval ...

Kyle Brandt
sumber

Jawaban:

4

Ini terlihat seperti salah satu kasus di mana simulasi (atau akses kode sumber ...> mendesah <) mungkin akan menjadi satu-satunya cara untuk melihat apa perilaku dengan tingkat kepercayaan apa pun.

Dokumentasi untuk entri log peristiwa untuk pembicaraan daur ulang kuota CPU tentang daur ulang adalah sebagai berikut:

Secara default, daur ulang kumpulan aplikasi tumpang tindih, yang berarti bahwa proses pekerja yang akan ditutup terus berjalan sampai setelah proses pekerja baru dimulai. Setelah proses pekerja baru dimulai, permintaan baru diteruskan ke sana. Proses pekerja lama dimatikan setelah selesai memproses permintaan yang ada, atau setelah batas waktu yang dikonfigurasi, mana yang lebih dulu. Cara daur ulang ini memastikan layanan tanpa gangguan kepada klien. Namun, jika aplikasi dalam kumpulan aplikasi tidak dapat menjalankan lebih dari satu instance itu sendiri pada suatu waktu, rotasi yang tumpang tindih dapat dinonaktifkan.

Tampaknya bagi saya bahwa, menurut definisi, menghentikan proses pekerja karena konsumsi CPU yang berlebihan akan berarti bahwa permintaan yang tertunda tidak akan diizinkan untuk diselesaikan (karena mereka menghabiskan kuota CPU).

Untuk berbicara dengan keprihatinan utama Anda: Saya tidak melihat apa pun yang membuat saya percaya bahwa proses pekerja baru tidak akan berputar secara otomatis. Pernyataan dalam tautan Stack Overflow Anda membuat saya mempertanyakan apakah algoritme yang digunakan oleh IIS mungkin, pada kenyataannya, mengikat daur ulang ke resolusi timer yang digunakan untuk mengukur kelelahan kuota CPU. Cara terbaik yang saya tahu untuk menentukan itu adalah dengan menulis komponen sisi server yang boros CPU, menyebarkannya ke lingkungan pengujian, dan melihat bagaimana perilaku daur ulangnya bekerja. Komponen sederhana yang berada di loop ketat selama beberapa detik dan kemudian mengembalikan string yang dikenal, dikombinasikan dengan klien yang menjalankan uji coba dengan sesuatu seperti kumpulan proses "wget" paralel mungkin sudah cukup.

Evan Anderson
sumber
Ya sepertinya aku mungkin harus mengujinya. Saya sudah menulis skrip pengujian satu kali pemuatan dengan python untuk menguji hal semacam ini yang berguna ... harus menggunakan versi soket dan pustaka http yang diretas agar saya dapat mengikat ke sumber IP yang berbeda :-)
Kyle Brandt
Satu permintaan mungkin cukup meskipun ... aplikasi web yang menghitung pi ...
Kyle Brandt
@Kyle: Saya tidak akan melakukan permintaan tanpa batas. Saya akan melakukan sesuatu yang, setelah Anda mendapatkan beberapa permintaan "dalam penerbangan", menjenuhkan CPU server tetapi akhirnya mengembalikan hasilnya. Dengan cara itu rig pengujian Anda dapat melaporkan keberhasilan / kegagalan semua permintaan yang dibuatnya. Kalau tidak, Anda tidak tahu apakah perilaku daur ulang benar-benar menghasilkan pemadaman layanan untuk klien atau tidak.
Evan Anderson
Oh saya mengerti apa yang Anda katakan ... sebenarnya bukan tujuan utama dari tes ini ... tapi info yang bagus untuk dimiliki. Saya hanya ingin melihat ketika itu dibunuh, apakah itu kembali atau tidak. Batas CPU akan menjadi sekitar 90% selama 5 menit pada sesuatu yang mungkin akan menggunakan 5-10%. Pada dasarnya, ini rusak :-)
Kyle Brandt
Pengujian saya sendiri menunjukkan bahwa menjalankan kumpulan aplikasi pada refresh 1 menit dengan batas CPU 1 (sangat kecil), ketika batasnya tercapai, System Event 5025 dicatat, dan kumpulan aplikasi dihentikan , yang mematikan proses w3wp. Setelah batas waktu berakhir, kumpulan aplikasi dimulai kembali.
glasnt
4

Diberikan komentar di respons lain, saya sudah melakukan pengujian sendiri, yang akan saya tiru di sini.

Dalam pengujian saya, membatasi kumpulan aplikasi (v4.0 terintegrasi) ke batas CPU kecil (0,01%) dan interval kecil (1 menit) dengan tindakan KillW3WP diaktifkan, melewati batas ini membunuh w3wp dengan menghentikan kumpulan aplikasi .

Setelah batas interval tercapai, kumpulan aplikasi secara otomatis dimulai kembali .

Mengubah aksi menjadi No Action tidak mengubah proses w3wp.

Dalam kedua kasus, Acara Sistem 5025 dicatat.

glasnt
sumber