MSMQ sangat lambat menerima pesan

8

Kami memiliki pengaturan lingkungan MSMQ yang cukup besar yang hari ini memutuskan untuk berhenti.

(Semuanya adalah VM di bawah Pembaruan vSphere 4.0 1)

Ada 8 Server Web yang menerima data dari klien di internet. Semua mesin ini telah menginstal MSMQ dan hanya mengirim pesan MSMQ ke server MSMQ utama. Pesan saat ini ditumpuk dalam antrian keluar. Mesin-mesin ini adalah Windows 2008 Web Edition dengan 2 Gigs of RAM dan 2 vCPUs.

Kami memiliki server MSMQ Clustered (Windows Cluster Server) yang mendapatkan pesan dari 8 server web. Tidak ada batasan jumlah data yang bisa berada dalam antrian. Hard drive adalah 50 Gigs, dan ada 46 Gigs ruang kosong. Mesin-mesin ini adalah Windows 2008 Enterprise Edition dengan 8 Gigs of RAM dan 4 vCPUs. Cluster digunakan untuk memiliki 2 vCPU tetapi beban CPU mencapai 100%, jadi saya meningkatkan kedua node Windows cluster menjadi 4 vCPU.

Ada 4 server aplikasi yang membaca pesan dari antrian dan memprosesnya.

Biasanya ini semua berfungsi dengan baik, tetapi tidak hari ini.

Pagi ini semuanya berjalan sangat lambat. 8 server web saat ini menampilkan hingga 300 ribu pesan yang duduk di antrian keluar. Server berkerumun saat ini menunjukkan lebih dari satu juta pesan dalam antrian (beberapa serendah 200rb).

Jika saya melihat perfmon di 8 server web itu menunjukkan bahwa saya rata-rata 2 pesan terkirim per detik. Jika saya melihat perfmon pada cluster itu menunjukkan ~ 7 pesan per detik masuk ke cluster.

Mesin yang melakukan pembacaan tidak mendapatkan banyak pesan masing-masing. Layanan tercepat mendapatkan 10-12 pesan per detik, yang paling lambat menunjukkan 0 atau 1.

Satu-satunya perubahan baru-baru ini adalah bahwa kami mengubah jumlah server web ujung depan dari 4 menjadi 8. Kami melakukan ini sekitar 2 minggu yang lalu tanpa masalah. Pada hari Selasa, kami menurunkan daya untuk melihat bagaimana 4 sisanya dapat menangani beban. Pada hari Rabu kami menghidupkan kembali empat mesin baru.

Disk pada cluster menunjukkan IO yang sangat rendah dan tidak ada antrian.

Untuk amannya saya telah memperbarui PowerPath ke versi terbaru tetapi itu tidak membantu.

8 server web berada pada satu vLAN, dan server Cluster'd dan server aplikasi berada pada vLAN kedua. Tidak ada firewall di antara vLAN.

Dan tidak ada yang berguna dalam aplikasi atau log sistem di salah satu mesin.

mrdenny
sumber
2
Ternyata penyebab lambatnya membaca MSMQ sebenarnya adalah masalah aplikasi. Layanan yang membaca dari antrian kemudian menuju ke hal-hal di berbagi file. Berbagi file mulai memakan waktu lebih lama dan lebih lama, yang menyebabkan layanan berjalan lebih lambat, yang menyebabkan antrian untuk kembali, dan sekarang kami memiliki kekacauan. Rupanya basis pengguna kami telah tumbuh jauh lebih cepat dari yang direncanakan dan kami memaksimalkan salah satu kelompok RAID di SAN yang menampung file yang dibagikan. Senin kami akan melakukan pemesanan terburu-buru untuk lebih banyak ruang SAN dengan vendor kami.
mrdenny
2
Kami tidak melihat pertumbuhan antrian ini sebelumnya karena server pemantauan kami adalah server Windows 2003, dan mesin Windows 2003 tidak dapat memantau Antrian MSMQ Windows 2008 Clustered dari jarak jauh. Server pemantauan sudah dijadwalkan untuk ditingkatkan pada bulan Maret. <sigh>
mrdenny

Jawaban:

4

Setiap kali seseorang mengatakan mereka memiliki lebih dari satu juta pesan, klakson alarm berbunyi! Pesan membutuhkan memori kernel (kumpulan halaman) untuk dikelola. Jika Anda memiliki begitu banyak pesan, Anda mungkin melelahkan apa yang tersedia di server berkerumun. Jumlah optimal untuk jumlah pesan dalam antrian adalah nol - pada dasarnya pastikan Anda biasanya dapat memproses pesan lebih cepat daripada yang bisa diterima.

Saya akan merekomendasikan mematikan server web dan sepenuhnya memproses backlog pesan sebelum membawanya kembali online.

Item Referensi 4 dari posting blog ini: http://blogs.msdn.com/johnbreakwell/archive/2006/09/18/insufficient-resources-run-away-run-away.aspx

Cheers John Breakwell (MSFT)


sumber
Saya mendapat panggilan ke PSS pada saat ini, dan saya menunggu mereka untuk menelepon saya kembali sekarang. Saya telah menghentikan pesan agar tidak masuk ke antrian di server web. Antrian keluar pada server web semuanya penuh pada saat ini dengan masing-masing 1 Gig info. Antrian Clustered memiliki total sekitar 4,5 juta pesan masing-masing. Biasanya kami menyimpan jumlah pesan yang sangat rendah dalam antrian karena data yang kami proses sangat cepat. Sesuatu terjadi (tidak yakin apa) dan semuanya pergi ke neraka.
mrdenny
John, terima kasih sudah mengintip untukku. Berdasarkan output dari tmq saya menduga itu masalah saya. Batasan kolam (dihitung kira-kira, dalam KB) Paged: limit 307.200 digunakan untuk 397% Nonpaged: limit 262.144 digunakan untuk 49% Saya mendapatkan antrian yang memperlambat pengeringan sementara saya menunggu PSS memanggil saya kembali. Jika Anda berada di Redmond selama KTT MVP beri tahu saya, bir pada saya.
mrdenny
@ user34024 kami menemukan masalah awal, yang saya berikan di komentar di atas. Terima kasih untuk bantuannya.
mrdenny
1

Saya bertanya kepada salah satu sysadmin kami dan dia berkata bahwa titik ajaib kami adalah 4 server web yang maksimum memukul kotak MSMQ pada mesin virtual, kemudian mereka pindah ke kotak perangkat keras untuk menyelesaikannya. Coba juga pengambilan paket untuk melihat apa yang terjadi. Apakah ada banyak dalam otentikasi yang akan AD juga? Dengan seberapa cerewetnya MSMQ, Anda perlu membatasi jalur jaringan dan kemungkinan jalur otentikasi.

HTH, Chuck.

SQLGuyChuck
sumber
Apakah mereka dapat menemukan apa yang sebenarnya menyebabkan pelambatan ketika Anda memiliki lebih dari 4 server web yang berbicara dengan satu server MSMQ? Penyimpanan adalah penyimpanan SAN langsung melalui iSCSI sehingga seharusnya tidak menjadi masalah penyimpanan per katakan. Saya akan mencoba mematikan 4 dari 8 server web dan melihat apa yang saya dapatkan. Jika saya harus memberi tahu atasan saya untuk membeli perangkat keras baru, akan ada alasan bagus.
mrdenny
Hanya obrolan pesan. Mereka juga menemukan beberapa konfigurasi miss otentikasi.
SQLGuyChuck
Saya kira saya akan mengunduh wireshark dan meletakkannya di server MSMQ dan melihat apa yang ditampilkan. Tidak dapat meletakkannya di server Web, macet setelah sekitar 30 detik karena beban lalu lintas jaringan.
mrdenny
Jadi saya menyalakan WireShark di mesin, dan saya melihat sekitar 3 detik antara pesan dari satu server web yang saya pantau. Tak perlu dikatakan, itu tidak terlihat bagus.
mrdenny
kami menemukan masalah awal, yang saya berikan di komentar di atas. Terima kasih untuk bantuannya.
mrdenny