Saya baru-baru ini memigrasi satu set server Windows Server 2008 R2 / IIS 7.5 ke server baru yang menjalankan Windows Server 2012 / IIS 8.
Saya mengalami beberapa perilaku aneh dari IIS. Kami memiliki 2 server yang identik, setiap server menjalankan 2 situs web, masing-masing di kumpulan aplikasi mereka sendiri. Kode untuk setiap situs web identik. (Secara harfiah ... dll yang sama dan semuanya, konfigurasi hanya sedikit berbeda).
Kumpulan aplikasi diatur untuk mendaur ulang pada jadwal setiap 24 jam, tetapi selama periode 24 jam itu, penggunaan CPU dari proses pekerja w3wp melonjak sebesar 12,5% (server memiliki 8 prosesor, jadi saya tidak berpikir itu adalah sebuah kebetulan).
Setelah penggunaan CPU melonjak, itu TIDAK AKAN kembali turun sampai aplikasi daur ulang. Sejauh yang saya tahu, aplikasi tidak melakukan apa-apa dan memproses TIDAK ada permintaan saat ini. Saya dapat memblokir semua lalu lintas ke server dan penggunaan CPU hanya akan tinggal di sana. Saya bahkan dapat MEMULAI situs web, dan penggunaan CPU tetap sama. Satu-satunya cara untuk mereset penggunaan CPU adalah dengan mendaur ulang atau memulai ulang kumpulan aplikasi tempat ia beroperasi.
Saya agak yakin bahwa masalah ini tidak ada hubungannya dengan kode saya, tetapi semacam konfigurasi IIS yang buruk atau perubahan IIS 8 yang bekerja buruk dengan konfigurasi perangkat keras atau sesuatu?
Tidak yakin apakah ini penting atau tidak, tetapi ini adalah server Rackspace Performance Cloud.
Berikut adalah tangkapan layar untuk menunjukkan kepada Anda beban CPU dari waktu ke waktu di server-server ini (panah hijau menunjukkan saat-saat kumpulan aplikasi didaur ulang. Anda dapat melihat bahwa setiap dataran tinggi merupakan kelipatan integral 12,5%:
Adakah yang mengamati perilaku ini? Saya telah menemukan pertanyaan ini sejak 2009 dengan seseorang yang tampaknya memiliki masalah yang sama dengan IIS 6:
IIS w3wp menggunakan cpu tinggi tanpa lalu lintas
Bantuan apa pun sangat kami hargai
Anda dapat mencoba menggunakan alat Diagnostik Debug untuk melacak apa yang menyebabkan masalah. Biasanya untuk pemecahan masalah kerusakan dan kebocoran memori, tetapi dapat membantu menemukan komponen mana yang menyebabkan masalah.
sumber
high CPU or RAM more 90%
?Ini benar-benar terlihat seperti beberapa kode yang terjebak dalam infinite loop.
Permintaan masuk, IIS mulai melayani itu, sesuatu (mungkin bug) memicu perilaku ini, utas pekerja memasuki loop tak terbatas dan mematok CPU hingga 100%, dan kemudian tetap seperti ini sampai kumpulan aplikasi didaur ulang.
Bahkan jika tidak ada permintaan baru yang masuk, CPU tetap digunakan karena utas macet tidak pernah benar-benar berakhir.
Terkadang permintaan baru memicu perilaku ini lagi , dan kemudian Anda mendapatkan dua CPU macet (atau tiga, atau empat ...).
Daur ulang kumpulan aplikasi tentu saja mengakhiri semua utas pekerja, sehingga masalahnya terpecahkan ... sampai terjadi lagi.
sumber
Anda dapat memasang profiler CPU ke proses w3wp dan lihat apa yang terjadi di sana. Anda harus dapat melihat apa yang menghabiskan siklus CPU.
sumber
Tampak seperti loop tak terbatas bagi saya. Saya telah melihat ini beberapa kali, meskipun IIS mengatakan tidak ada permintaan luar biasa. Saya tidak yakin bagaimana itu bisa terjadi, tetapi ini persis seperti yang Anda lihat. Bagian yang sulit adalah bahwa IIS tidak mencatat permintaan sampai mereka selesai, jadi mencari tahu permintaan mana yang memicu perilaku ini sulit.
sumber