MSMQ rất chậm nhận tin nhắn


8

Chúng tôi đã có một thiết lập môi trường MSMQ khá lớn mà ngày nay đã quyết định dừng lại.

(Mọi thứ đều là VM theo vSphere 4.0 Update 1)

Có 8 Máy chủ Web nhận dữ liệu từ khách hàng trên mạng. Các máy này đều đã cài đặt MSMQ và chỉ cần gửi tin nhắn MSMQ đến máy chủ MSMQ chính. Tin nhắn hiện đang được chất đống trong hàng đợi đi. Các máy này là Windows 2008 Web Edition với 2 Gigs RAM và 2 vCPUs.

Chúng tôi có một máy chủ MSMQ Clustered (Windows Cluster Server) nhận thông báo từ 8 máy chủ web. Không có giới hạn về số lượng dữ liệu có thể có trong hàng đợi. Ổ cứng là 50 Gigs và có 46 Gigs không gian trống. Các máy này là Windows 2008 Enterprise Edition với 8 Gigs RAM và 4 vCPUs. Cụm được sử dụng để có 2 vCPU nhưng tải CPU đã đạt 100%, vì vậy tôi đã tăng cả hai nút của cụm Windows lên 4 vCPU.

Có 4 máy chủ ứng dụng đọc tin nhắn từ hàng đợi và xử lý chúng.

Thông thường tất cả điều này hoạt động hoàn hảo, nhưng không phải hôm nay.

Sáng nay mọi thứ đang chạy rất chậm. 8 máy chủ web hiện đang hiển thị tới 300 nghìn tin nhắn trong hàng đợi bên ngoài. Máy chủ phân cụm hiện hiển thị hơn một triệu tin nhắn trong hàng đợi (một số thấp tới 200k).

Nếu tôi nhìn vào perfmon tại 8 máy chủ web thì nó cho thấy tôi đang trung bình 2 tin nhắn được gửi mỗi giây. Nếu tôi nhìn vào perfmon trên cụm thì nó hiển thị ~ 7 tin nhắn mỗi giây đang đi vào cụm.

Các máy đang đọc không nhận được nhiều tin nhắn. Các dịch vụ nhanh nhất đang nhận được 10-12 tin nhắn mỗi giây, chậm nhất là hiển thị 0 hoặc 1.

Những thay đổi duy nhất gần đây là chúng tôi đã thay đổi số lượng máy chủ web mặt trước từ 4 thành 8. Chúng tôi đã làm điều này khoảng 2 tuần trước mà không gặp vấn đề gì. Vào thứ ba, chúng tôi đã cung cấp cho họ xuống để xem 4 người còn lại có thể xử lý tải như thế nào. Vào thứ Tư, chúng tôi đã bật bốn máy mới hơn.

Đĩa trên cụm hiển thị IO rất thấp và không có hàng đợi.

Để an toàn, tôi đã cập nhật PowerPath lên phiên bản mới nhất nhưng điều đó không giúp được gì.

8 máy chủ web nằm trên một vlan và các máy chủ của Cluster và các máy chủ ứng dụng nằm trên một vlan thứ hai. Không có tường lửa giữa các vlan.

Và không có gì hữu ích trong ứng dụng hoặc nhật ký hệ thống trên bất kỳ máy nào.


2
Nó chỉ ra rằng nguyên nhân của việc đọc MSMQ chậm thực sự là một vấn đề ứng dụng. Các dịch vụ đọc từ hàng đợi sau đó chuyển đến chia sẻ tệp. Việc chia sẻ tệp bắt đầu mất nhiều thời gian hơn và lâu hơn, điều này khiến các dịch vụ chạy chậm hơn, khiến cho hàng đợi sao lưu và bây giờ chúng tôi gặp rắc rối. Rõ ràng cơ sở người dùng của chúng tôi đã tăng nhanh hơn nhiều so với kế hoạch và chúng tôi đang tối đa hóa một trong các nhóm RAID trên SAN, nơi lưu trữ các chia sẻ tệp. Thứ hai, chúng tôi sẽ đặt hàng gấp rút để có thêm không gian SAN với nhà cung cấp của chúng tôi.
mrdenny

2
Chúng tôi không thấy sự tăng trưởng hàng đợi này trước thời hạn vì máy chủ giám sát của chúng tôi là máy chủ Windows 2003 và máy Windows 2003 không thể theo dõi Hàng đợi Windows 2008 MSMQ được xếp cụm từ xa. Máy chủ giám sát đã được lên kế hoạch nâng cấp vào tháng 3. <thở dài>
mrdenny

Câu trả lời:


4

Bất cứ khi nào ai đó nói rằng họ có hơn một triệu tin nhắn, klaxons báo động sẽ tắt! Tin nhắn yêu cầu bộ nhớ kernel (paged pool) được quản lý. Nếu bạn có số lượng tin nhắn lớn như vậy, bạn có thể đang cạn kiệt những gì có sẵn trên máy chủ cụm. Số lượng tối ưu cho số lượng tin nhắn trong hàng đợi là 0 - về cơ bản đảm bảo bạn có thể xử lý tin nhắn nhanh hơn bình thường.

Tôi khuyên bạn nên tắt các máy chủ web và xử lý hoàn toàn các hồ sơ tồn đọng của tin nhắn trước khi đưa chúng trở lại trực tuyến một lần nữa.

Mục tham khảo 4 của bài đăng trên blog này: http://bloss.msdn.com/johnbreakwell/archive/2006/09/18/insu enough-resource-run -away-run -away.aspx

Chúc mừng John Breakwell (MSFT)


Tôi đã có một cuộc gọi đến PSS vào thời điểm này và tôi đang chờ họ gọi lại cho tôi ngay bây giờ. Tôi đã ngăn các tin nhắn chảy vào hàng đợi trên các máy chủ web. Các hàng đợi bên ngoài trên các máy chủ web đều có đầy đủ tại thời điểm này với mỗi 1 thông tin. Các hàng đợi Clustered có tổng cộng khoảng 4,5 triệu tin nhắn. Thông thường chúng tôi giữ số lượng tin nhắn rất thấp trong hàng đợi vì chúng tôi nhận được dữ liệu được xử lý rất nhanh. Một cái gì đó đã xảy ra (không chắc chắn những gì) và tất cả đã đi vào địa ngục.
mrdenny

John, cảm ơn vì đã nhìn trộm tôi. Dựa trên đầu ra từ tmq, tôi đoán đó là vấn đề của tôi. Giới hạn nhóm (tính toán xấp xỉ, tính bằng KB) Đã phân trang: giới hạn 307.200 được sử dụng cho 397% Không được phân loại: giới hạn 262.144 được sử dụng cho 49% Tôi đã nhận được các hàng đợi chậm chảy trong khi chờ PSS gọi lại cho tôi. Nếu bạn ở Redmond trong Hội nghị thượng đỉnh MVP hãy cho tôi biết, hãy uống bia với tôi.
mrdenny

@ user34024 chúng tôi đã tìm thấy sự cố ban đầu mà tôi đã đưa ra nhận xét ở trên. Cảm ơn đã giúp đỡ.
mrdenny

1

Tôi đã hỏi một trong những sysadins của chúng tôi và anh ấy nói rằng điểm kỳ diệu của chúng tôi là 4 máy chủ web đạt tối đa hộp MSMQ trên máy ảo, sau đó họ chuyển sang hộp phần cứng để giải quyết. Cũng thử chụp gói để xem những gì đang xảy ra. Có nhiều trong xác thực đi đến AD cũng không? Với MSMQ trò chuyện như thế nào, bạn cần giới hạn đường dẫn mạng và có thể là đường dẫn xác thực.

HTH, Chuck.


Họ có thể hiểu được chính xác nguyên nhân gây ra sự chậm chạp khi bạn có hơn 4 máy chủ web nói chuyện với một máy chủ MSMQ không? Bộ lưu trữ là bộ lưu trữ SAN trực tiếp trên iSCSI, do đó, đây không phải là vấn đề lưu trữ. Tôi sẽ thử tắt 4 trong số 8 máy chủ web và xem những gì tôi nghĩ ra. Nếu tôi phải nói với sếp của tôi để mua phần cứng mới, sẽ cần một lý do chính đáng.
mrdenny

Chỉ là sự chát chúa của những tin nhắn. Họ cũng tìm thấy một số cấu hình bỏ lỡ xác thực.
SQLGuyChuck

Tôi đoán tôi sẽ tải xuống wireshark và đưa nó lên máy chủ MSMQ và xem những gì nó hiển thị. Không thể đặt nó trên các máy chủ Web, nó gặp sự cố sau khoảng 30 giây do tải lưu lượng mạng.
mrdenny

Vì vậy, tôi đã kích hoạt WireShark trên máy và tôi thấy khoảng 3 giây giữa các tin nhắn từ một máy chủ web mà tôi đang theo dõi. Không cần phải nói, điều đó không tốt.
mrdenny

chúng tôi đã tìm thấy vấn đề ban đầu, mà tôi đã đưa ra một nhận xét ở trên. Cảm ơn đã giúp đỡ.
mrdenny

1

Tham khảo bình luận của bạn về việc thiếu quản trị từ xa, vâng, đó không phải là một câu chuyện tuyệt vời với MSMQ và quầy hoàn hảo. Đối với bất kỳ ai theo dõi chủ đề và muốn biết những sự kết hợp nào của các hệ điều hành hoạt động thì hãy xem blog Motley Queue:

Bộ đếm hiệu suất MSMQ 4.0 và Khóa đăng ký NetNameForPerfCounters http://bloss.msdn.com/motleyqueue/archive/2007/12/14/msmq-4-0-performance-counters-and-the-netnameforperfcounters-registry-key.asp

Chúc mừng John Breakwell (MSFT)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.