Saya memiliki aplikasi web ASP.NET (v4.0) yang diinstal di direktori virtual (sebagai aplikasi) dan di-host di kumpulan aplikasi itu sendiri. Ini diulangi untuk setiap instance aplikasi (yaitu per pelanggan).
Kumpulan aplikasi adalah mode terintegrasi (bukan klasik) dan LoadUserProfile disetel ke true. Jika tidak, pengaturan default.
Setiap instance saat ini memiliki salinan kode / konfigurasi sendiri, dan itu adalah folder data sendiri (file dasar baca / tulis).
1 instance dari aplikasi ini berjalan dengan baik (operasi yang digunakan untuk perbandingan membutuhkan waktu ~ 4 detik). Setiap instance lainnya berjalan lambat (dari 10-25 detik untuk operasi yang sama).
Jika saya memindahkan instance yang lebih lambat ke kumpulan aplikasi "tercepat", instance itu akan hidup. Jika saya memindahkan instance yang lebih cepat ke kumpulan aplikasi yang lebih lambat instance itu melambat ke perayapan.
Kolam aplikasi dibuat dengan cara yang sama pada awalnya - secara manual. Saya kemudian menggunakan salinan rutin powershell untuk memastikan salinan yang tepat dari kumpulan aplikasi lebih cepat dan masih perilaku yang sama. Membandingkan file apppool.config menunjukkan mereka identik kecuali penugasan direktori virtual.
Tidak ada sumber daya bersama yang sedang diblokir, sejauh yang saya tahu, dan saya mengujinya dengan mematikan kumpulan aplikasi berkinerja dan memulai kembali ... lambat masih lambat, dan kemudian ketika saya memulai ulang kumpulan aplikasi itu (jadi itu dimuat terakhir) masih lebih cepat ...
Jawaban:
Untuk lebih mengisolasi masalah, saya sarankan menjalankan Wireshark (atau penganalisa paket pilihan lainnya) pada sistem host, untuk dua sesi. Asumsi yang saya buat adalah bahwa setiap kumpulan aplikasi memiliki IP unik yang ditetapkan untuknya, atau port unik.
Pertama, dapatkan kinerja awal Anda dengan memfilter pada port IP: kumpulan aplikasi cepat Anda. Lihat seperti apa lalu lintas ke dan dari aplikasi dalam kondisi "normal".
Jalankan kedua, Anda harus menangkap lalu lintas dari kumpulan aplikasi yang lambat / tidak responsif. Jika semua perutean jaringan dan semacamnya benar hingga kotak, Anda akan melihat permintaan berulang dalam satu arah, kemungkinan besar ke aplikasi dari tempat lain, TAPI jika aplikasi Anda adalah sesuatu yang membuat banyak permintaan ke server lain, lalu lintas Anda mungkin berat di jalan keluar bukannya masuk.
Tes ini akan memberi tahu Anda jika masalahnya ada di dalam aplikasi, atau jika masalah terkait TCP / IP yang mengakibatkan permintaan waktu aplikasi habis karena komunikasi yang rendah / tidak ada.
Korelasikan stempel waktu pengujian Anda dengan log peristiwa server dan (jika ada) log tracesink, dan Anda harus dapat membidik masalah tersebut.
sumber
Pelacakan Permintaan Gagal (FRT) akan menjadi alat terbaik Anda untuk melacaknya. Ini akan menunjukkan jalur pipa dan berapa lama setiap langkah harus diselesaikan. Itu harus menunjukkan apakah itu sesuatu dalam bagian asp.net atau jika itu sesuatu dalam pipa IIS itu sendiri.
Untuk mengatur FRT, dari IIS di tingkat situs buat aturan FRT dengan rentang status http 200-999, dan pastikan untuk mengaktifkan FRT (ini adalah langkah terpisah dari panel tindakan).
Kemudian mereproduksi masalah dan lihat file yang dihasilkan (% SystemDrive% \ inetpub \ logs \ FailedReqLogFiles \ w3svc {siteid}). Buka di Internet Explorer.
sumber
Ketika IIS menunda untuk jangka waktu yang lama tanpa alasan yang jelas itu biasanya berarti bahwa IIS sedang menunggu layanan luar untuk time out. Ketika itu terjadi maka ia mencoba pendekatan lain. Untuk hal ini, ini berlaku untuk hampir semua hal di Windows atau Linux. Tersangka pertama bagi saya dalam situasi ini selalu konfigurasi resolusi nama jaringan. Itu bersalah sampai terbukti tidak bersalah.
Apakah ini dapat dibuat ulang dengan satu pengguna memukul salah satu situs duplikat? Akan lebih baik untuk mengetahui apa yang dilakukan CPU dan disk saat Anda membuat ulang waktu respons 10 hingga 20 detik. Jika tampaknya tidak banyak yang terjadi selama 10-20 detik, maka Anda harus memeriksa nama yang mengikat dan resolusi nama untuk nama yang terikat. Jika CPU atau disk mengunyah maka Anda perlu mencari tahu proses mana yang bekerja terlalu keras dan mengapa.
Silakan posting temuan Anda, saya penasaran.
PS Saya juga akan memeriksa resolusi nama dan akses ke setiap layanan otentikasi yang mungkin dimainkan. Misalnya, jika server memutuskan untuk dikonsultasikan, pastikan server DNS pertama dalam daftar Anda adalah server DNS untuk domain tersebut.
sumber
Ini bukan solusinya tetapi kami akan berusaha untuk itu;
Jalankan IISRESET (selama jam pemeliharaan) atau bunuh W3WP yang termasuk dalam kumpulan aplikasi yang tidak responsif
Luncurkan aplikasi
Meskipun tidak responsif, ambil file dump W3WP yang termasuk dalam kumpulan aplikasi yang lambat. Gunakan penjelajah proses atau pengelola tugas untuk membuat file dump
Raih mscordacwks.dll dan mscorwks.dll dari bawah C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.XXXXX
Zip dan unggah file ini dari suatu tempat dari mana saya dapat mengunduh.
sumber