2010-02-25 22 views
6

Tôi nhận được ngoại lệ truyền thông sau đây đối với dịch vụ wcf của tôi làm cho dịch vụ wcf khác: "Đã vượt quá hạn ngạch dung lượng tối đa cho thư đến (65536). Để tăng hạn ngạch, hãy sử dụng thuộc tính MaxReceivedMessageSize trên yếu tố ràng buộc. "Giới hạn tối đa của thuộc tính cấu hình MaxReceivedMessageSize trong wcf có ảnh hưởng đến hiệu suất dịch vụ không?

tôi giải quyết điều này bằng cách tăng kích thước như sau: maxReceivedMessageSize = "50.000.000"

Nhưng, ở đây tôi muốn biết liệu bất kỳ tác dụng phụ của việc tăng kích thước thông điệp tới mức lớn như vậy.

Trả lời

5

Có - có thể. Lý do WCF giữ giới hạn này thấp (64K) theo mặc định là điều này: hãy tưởng tượng máy chủ của bạn đang bận đáp ứng các yêu cầu, nói hàng chục hoặc hàng trăm, và tất cả đều yêu cầu kích thước tin nhắn tối đa.

Có thể, máy chủ của bạn có thể phải phân bổ hàng chục hoặc hàng trăm bộ đệm thư cùng một lúc - nếu bạn có 100 người dùng và mỗi yêu cầu 64K, đó là 6,4 MByte - nhưng nếu bạn có 200 người dùng và mỗi yêu cầu 5 MB - đó là một gigabyte RAM trong máy chủ - chỉ dành cho bộ đệm tin nhắn, cho một dịch vụ.

Vì vậy, có - đặt giới hạn cho kích thước thư tối đa không có ý nghĩa và giúp quản lý mức tiêu thụ bộ nhớ của máy chủ (và do đó hiệu suất). Nếu bạn mở nó quá rộng, kẻ tấn công có thể tấn công máy chủ của bạn với các yêu cầu không có thật, mỗi bộ nhớ sẽ phân phối càng nhiều bộ nhớ càng tốt, cuối cùng là đưa máy chủ của bạn xuống (tấn công từ chối dịch vụ như vậy là khá phổ biến) .

+0

Vì vậy, nó không chỉ cho bu đáp ứng nếu chúng ta đặt trong tệp cấu hình phía dịch vụ/máy chủ, nó có nghĩa là để nhận yêu cầu. Tôi có hiểu đúng? Chúng tôi có thể hạn chế phản hồi ở phía máy chủ không? những gì tôi có nghĩa là tôi hy vọng dịch vụ của tôi để tạo ra tối đa 2 MB phản ứng tối đa. nhưng ngoại lệ xảy ra và tôi muốn tránh các phản hồi lớn hơn được gửi đi. Tôi có thiết lập cho điều đó ở phía dịch vụ không? – batmaci

0

Bạn cần tăng hạn ngạch theo dịch vụ web. Một tác dụng phụ tôi có thể nghĩ nếu bạn sử dụng các giá trị rất lớn là việc sử dụng bộ nhớ sẽ tăng lên nhưng bạn có thể tăng nó một cách an toàn lên một giá trị phù hợp mà không có bất kỳ tác dụng phụ nào.

Các vấn đề liên quan