Aplikasi IIS7 ASP.NET - 2 aplikasi identik dalam 2 kumpulan aplikasi identik, 1 responsif dan 1 tidak

12

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 ...


sumber
Dan folder aplikasi identik dengan byte?
usr
Ya, hanya tiga kali dicentang tetapi satu-satunya perbedaan adalah di web.config di mana ia menentukan nama direktori virtual yang di-host di bawah (dan saya mengecek itu adalah satu-satunya perbedaan juga) Setiap file lainnya adalah byte-identik .. .
Apa yang dilakukan aplikasi yang membutuhkan waktu lebih lama dalam satu apppool? Bisakah Anda melampirkan VS dan menjeda debugger ke profil itu?
usr
Saya tidak memasang VS di server karena ini adalah sistem produksi, tetapi sepertinya ini adalah perhentian saya berikutnya. Saya bagian jalan melalui menambahkan logging verbose besar-besaran ke akses data dan komponen akses file sebagai penelusuran kami telah menunjukkan tidak ada yang spesifik belum. Saya akan mendapatkan lebih banyak statistik dan menambahkannya SECEPATNYA - Saya optimis bahwa seseorang mungkin mengalami hal serupa sehingga saya dapat menghindari jalan itu
1
Karena Anda memuat profil pengguna, sepertinya itulah perbedaan utama di antara kumpulan aplikasi tersebut. Periksa para pengguna tersebut temp lokasi, file izin menulis di sana, dan jika terhubung ke database menggunakan pengguna yang sama, maka periksa izin pada DB juga. Yang diperlukan hanyalah waktu tunggu untuk pengguna itu, jadi uji dengan DB yang sama jika memungkinkan. Semoga berhasil!

Jawaban:

1

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.

George Erhard
sumber
0

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.

Scott Forsyth - MVP
sumber
0

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.

BigTFromAZ
sumber
0

Ini bukan solusinya tetapi kami akan berusaha untuk itu;

  1. Jalankan IISRESET (selama jam pemeliharaan) atau bunuh W3WP yang termasuk dalam kumpulan aplikasi yang tidak responsif

  2. Luncurkan aplikasi

  3. Meskipun tidak responsif, ambil file dump W3WP yang termasuk dalam kumpulan aplikasi yang lambat. Gunakan penjelajah proses atau pengelola tugas untuk membuat file dump

  4. Raih mscordacwks.dll dan mscorwks.dll dari bawah C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.XXXXX

  5. Zip dan unggah file ini dari suatu tempat dari mana saya dapat mengunduh.

G33kKahuna
sumber