Minggu lalu sesuatu yang aneh terjadi pada basis data kami. Tiba-tiba, aplikasi diblokir untuk pengguna kami yang tidak dapat menyimpan entitas baru dll. Setelah melihat Monitor Aktivitas SQL Server (2008 dengan mode kompatibilitas 2005) Saya melihat tiga entri berikut:
Setelah beberapa waktu, pengguna mendapat waktu habis koneksi. Ketika saya membunuh proses 64, mereka bisa menyelamatkan secara normal lagi.
Masalahnya adalah bahwa entitas yang mereka coba simpan selama blok dimasukkan ke dalam DB lebih dari sekali (hingga 3 kali) meskipun ada kode yang harus mencegah hal ini terjadi (kolom angka yang harus unik tetapi tanpa kendala ... cek terjadi dalam kode).
Kami menggunakan Entity Framework 6.0.
- Apakah ada di antara Anda yang tahu mengapa dan kapan ASYNC_NETWORK_IO menunggu jenis ini terjadi dan bagaimana cara menghindarinya?
- Dan apa sebenarnya artinya?
sql-server
sql-server-2008
entity-framework
xeraphim
sumber
sumber
Jawaban:
ASYNC_NETWORK_IO
entah bagaimana menunjukkan bahwa aplikasi klien tidak memproses hasil secepat SQL Server memberi mereka makan. Ini bisa disebabkan oleh masalah dengan aplikasi klien atau dengan koneksi jaringan antara server dan aplikasi klien.Silakan merujuk ke posting oleh Thomas LaRock
atau posting ini oleh Joe Sack
Karena Anda menggunakan
entity framework
posting ini oleh Brent Ozar mungkin berguna jugasumber
Ada beberapa kesalahpahaman mengenai jenis tunggu ASYNC_NETWORK_IO, terutama karena nama yang menunjukkan masalah jaringan, tetapi sangat jarang alasan untuk jenis tunggu ini.
Tunggu ASYNC_NETWORK_IO yang berlebihan dapat terjadi dalam dua skenario:
Sesi harus menunggu aplikasi klien untuk memproses data yang diterima dari SQL Server untuk mengirim sinyal ke SQL Server sehingga dapat menerima data baru untuk diproses. Ini adalah skenario umum yang mungkin mencerminkan desain aplikasi yang buruk, dan merupakan yang paling sering menyebabkan nilai tipe tunggu ASYNC_NETWORK_IO yang berlebihan.
Ini melibatkan menyelidiki aplikasi yang menyebabkan nilai tipe tunggu ASYNC_NETWORK_IO yang berlebihan dan sering berkoordinasi dengan pengembang aplikasi yang membuatnya.
Bandwidth jaringan maksimal. Ethernet yang tersumbat akan menyebabkan lambatnya pengiriman data dari aplikasi. Ini, dengan sendirinya, akan menurunkan efisiensi aplikasi.
Lebih banyak detail dapat ditemukan di halaman ini
sumber