2010-03-16 41 views
18

Tôi có dịch vụ WCF được triển khai trong ứng dụng bảng điều khiển có BasicHTTPBinding và SSL được bật. Các thuộc tính sau được thiết lập cũng như:Điều chỉnh dịch vụ WCF

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

Tôi cũng đã thiết lập các hành vi throttling để

<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647" 
     maxConcurrentInstances="2147483647" /> 

Mặt khác tôi đã tạo ra một khách hàng thử nghiệm (đối với kiểm tra tải) bắt đầu nhiều khách hàng cùng một lúc (nhiều chủ đề) và thực hiện các giao dịch trên máy chủ. Tất cả mọi thứ có vẻ tốt nhưng trên máy chủ sử dụng CPU không tăng vì vậy tôi thêm một số đăng nhập để xem số lượng các cuộc gọi đồng thời đến máy chủ và thấy rằng nó không bao giờ đi qua 6.

Tôi đã xem xét mã đăng nhập hiệu suất hơn hơn hai lần và có vẻ ổn với tôi.

Vì vậy, tôi muốn hỏi đâu là vấn đề trong tình huống này? Tôi chưa chỉ định bất kỳ loại ContextMode hoặc ConcurrencyMode nào.

Sau bài đăng này, tôi nhận thấy rằng bất cứ khi nào tôi bắt đầu một Intance of Test Client, Counter Server đồng thời của tôi sẽ tăng lên 2 như nếu tôi chỉ chạy 1 instance, các cuộc gọi Rcvd đồng thời tối đa sẽ là 2 và nếu có hai trường hợp giống nhau giá trị đi đến 4 và cứ tiếp tục như vậy. Có giới hạn số cuộc gọi WCF từ một lần xử lý không?

******** Ngày 17 tháng ********

Hôm nay tôi chạy một thử nghiệm với một khách hàng thử nghiệm (với 50 người dùng đồng thời) trên cùng một máy mà trên đó máy chủ đang chạy. Lần này tôi nhận được kết quả chính xác những gì tôi muốn nó hiển thị (tức là các cuộc gọi đồng thời tối đa Rcvd bởi Server = 50).

Nhưng tôi cũng cần làm như vậy trên các máy khác. Ai có thể giúp tôi về điều này?

Trả lời

18

Tôi đã tìm thấy giải pháp: có giới hạn kết nối trên ServicePointManager đã gây ra sự cố này. Để loại bỏ giới hạn này, bạn chỉ cần thiết lập

System.Net.ServicePointManager.DefaultConnectionLimit = X; 

nơi giới hạn mặc định là 2.

+4

Từ @JuliaS: Trường hợp nào dòng này đi đâu? Đây có phải là cài đặt dịch vụ khách hàng hoặc WCF không? –

+1

xin lỗi vì trả lời trễ: điều này xảy ra với bất kỳ ứng dụng .net nào làm cho nhiều kết nối ra ngoài đồng thời tới bất kỳ máy chủ nào. –

22

Hoặc sử dụng cấu hình này trong các khách hàng.

<system.net> 
    <connectionManagement> 
     <add maxconnection = "200" address ="*" /> 
    </connectionManagement> 
    </system.net> 

đây 200 là giới hạn từ khách hàng

+0

Nó được mô tả ở đây http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx và có lẽ bạn cần biết http://support.microsoft.com/kb/969189 –

+0

MSDN này: [ Element (Cài đặt mạng)] (https://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx) –

+0

tôi đã thêm maxconnection = "100" address = "*" nhưng không may mắn nhận được lỗi hết thời gian chờ trong WCF –

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