ID Artikel: 821268 - Kajian Terakhir: 04 Oktober 2011 - Revisi: 2.0 Pertengkaran, kinerja yang buruk, dan deadlock ketika Anda membuat permintaan layanan Web dari ASP.NET aplikasi
Pada Halaman iniGEJALAKetika Anda membuat panggilan ke layanan XML Web dari ASP.NET
aplikasi, Anda mungkin mengalami pertentangan, kinerja yang buruk, dan deadlock.
Klien dapat melaporkan bahwa permintaan berhenti merespons (atau "menggantung") atau mengambil sangat
waktu yang panjang untuk menjalankan. Jika jalan buntu diduga, proses pekerja mungkin
daur ulang. Anda akan menerima pesan berikut di log peristiwa aplikasi.
"System.InvalidOperationException:
Ada tidak cukup bebas benang di objek ThreadPool untuk menyelesaikan
operasi." "HttpException (0x80004005): permintaan timed
keluar." PENYEBABMasalah ini mungkin terjadi karena ASP.NET membatasi jumlah
thread pekerja dan penyelesaian pelabuhan benang yang panggilan dapat digunakan untuk mengeksekusi
permintaan. Biasanya, panggilan untuk layanan Web menggunakan satu pekerja benang untuk mengeksekusi kode yang mengirim permintaan dan penyelesaian satu port benang untuk menerima panggilan balik dari layanan Web. Namun, jika permintaan dialihkan atau memerlukan otentikasi, panggilan dapat menggunakan sebanyak dua pekerja dan dua penyelesaian pelabuhan benang. Oleh karena itu, Anda dapat knalpot dikelola ThreadPool ketika beberapa layanan Web panggilan terjadi pada waktu yang sama. Untuk contoh, Anggaplah bahwa ThreadPool terbatas pada 10 pekerja benang, dan semua 10 pekerja benang saat ini mengeksekusi kode yang menunggu untuk panggilan balik untuk mengeksekusi. Panggil balik tidak pernah dapat mengeksekusi karena pekerjaan item yang antri untuk ThreadPool diblokir sampai thread menjadi tersedia. Potensial lain sumber pertentangan adalah maxconnection parameter yang System.net namespace menggunakan untuk membatasi jumlah koneksi. Umumnya, batas ini bekerja seperti yang diharapkan. Namun, jika banyak aplikasi yang mencoba untuk membuat banyak permintaan untuk satu alamat IP pada saat yang sama, benang mungkin harus menunggu koneksi yang tersedia. PEMECAHAN MASALAHUntuk mengatasi masalah ini, Anda dapat menyetel berikut
parameter di file Machine.config elemen dari terbaik sesuai dengan situasi Anda:
maxWorkerThreads dan maxIoThreadsASP.NET menggunakan pengaturan konfigurasi dua berikut untuk membatasi jumlah maksimum pekerja benang dan penyelesaian benang yang digunakan:2 * maxWorkerThreads minFreeThreads dan minLocalRequestFreeThreadsASP.NET juga berisi konfigurasi berikut pengaturan yang menentukan berapa banyak pekerja benang dan penyelesaian port benang harus tersedia untuk memulai permintaan remote atau lokal permintaan: (maxWorkerThreads*jumlah CPU)-minFreeThreads Catatan The minFreeThreads parameter dan minLocalRequestFreeThreads parameter tidak secara implisit dikalikan dengan jumlah CPU.minWorkerThreadsSeperti ASP.BERSIH 1.0 Service Pack 3 dan ASP.NET 1.1, ASP.NET juga berisi pengaturan konfigurasi berikut yang menentukan bagaimana banyak pekerja benang dapat dibuat tersedia segera untuk layanan remote permintaan.maxconnectionThe maxconnection parameter ini menentukan berapa banyak koneksi dapat dibuat untuk alamat IP tertentu. Parameter muncul sebagai berikut:executionTimeoutASP.NET menggunakan pengaturan konfigurasi berikut untuk batas waktu eksekusi permintaan:Catatan Jika Anda meningkatkan nilai executionTimeout parameter, Anda juga harus memodifikasi processModel responseDeadlockInterval parameter pengaturan. RekomendasiPengaturan yang disarankan di bagian ini tidak dapat berfungsi untuk semua aplikasi. Namun, informasi tambahan berikut dapat membantu Anda untuk membuat penyesuaian yang tepat.Jika Anda membuat satu Web layanan panggilan untuk satu alamat IP dari setiap halaman ASPX, Microsoft menganjurkan agar Anda menggunakan pengaturan konfigurasi berikut:
Catatan Ketika Anda menggunakan konfigurasi ini, Anda dapat melaksanakan maksimum 12 ASP.NET permintaan per CPU pada saat yang sama karena 100-88 = 12. Oleh karena itu, setidaknya 88 *N pekerja benang dan 88 *N penyelesaian pelabuhan benang yang tersedia untuk penggunaan lain (seperti callback layanan Web). Misalnya, Anda memiliki sebuah server dengan empat prosesor dan hyperthreading diaktifkan. Berdasarkan rumus ini, Anda akan menggunakan nilai berikut untuk pengaturan konfigurasi yang disebutkan dalam artikel ini. Juga, ketika Anda menggunakan konfigurasi ini, sambungan 12 tersedia per CPU per alamat IP untuk setiap AppDomain. Oleh karena itu, di bawah skenario, sangat sedikit pertentangan terjadi ketika permintaan menunggu sambungan, dan ThreadPool tidak lelah:
STATUS Ini
adalah aktivitas. INFORMASI LEBIH LANJUT Jika Anda mengalami kinerja yang buruk dan pertarungan di IIS 7.0 dengan ASP.NET, melihat blog Microsoft berikut: ASP.NET Thread penggunaan pada IIS 6.0 dan 7.0 http://Blogs.msdn.com/tmarq/Archive/2007/07/21/ASP-net-thread-Usage-on-IIS-7-0-and-6-0.aspx
(http://blogs.msdn.com/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx)
ASP.net menggantung di IIS 7.0http://Blogs.msdn.com/webtopics/Archive/2009/02/13/ASP-net-Hang-in-IIS-7-0.aspx
(http://blogs.msdn.com/webtopics/archive/2009/02/13/asp-net-hang-in-iis-7-0.aspx)
REFERENSIUntuk informasi lebih lanjut, kunjungi Website Microsoft berikut
Situs Web Developer Network (MSDN): http://msdn2.Microsoft.com/en-us/library/ms998549.aspx
(http://msdn2.microsoft.com/en-us/library/ms998549.aspx)
Penerjemahan MesinPENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah. Klik disini untuk melihat versi Inggris dari artikel ini:821268
(http://support.microsoft.com/kb/821268/en-us/
)
| Sumber Lain Situs Pendukung Lain
KomunitasCari Bantuan SekarangTerjemahan Artikel
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Kembali ke atas
