Điều tra chi tiết về thời gian chờ của WCF


94

Chúng tôi có một ứng dụng có dịch vụ WCF (* .svc) chạy trên IIS7 và các ứng dụng khách khác nhau đang truy vấn dịch vụ. Máy chủ đang chạy Win 2008 Server. Máy khách đang chạy Windows 2008 Server hoặc Windows 2003 server. Tôi nhận được một ngoại lệ sau đây, mà tôi đã thấy trên thực tế có thể liên quan đến một số lượng lớn các vấn đề WCF tiềm ẩn.

System.TimeoutException: The request channel timed out while waiting for a reply after 00:00:59.9320000. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout. ---> System.TimeoutException: The HTTP request to 'http://www.domain.com/WebServices/myservice.svc/gzip' has exceeded the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout. 

Tôi đã tăng thời gian chờ lên 30 phút và lỗi vẫn xảy ra. Điều này cho tôi biết rằng một cái gì đó khác đang diễn ra, bởi vì số lượng dữ liệu không bao giờ có thể mất 30 phút để tải lên hoặc tải xuống.

Lỗi đến và đi. Hiện tại, nó thường xuyên hơn. Dường như không có vấn đề gì nếu tôi có 3 khách hàng đang chạy đồng thời hoặc 100, nó vẫn xảy ra thỉnh thoảng. Hầu hết thời gian, không có thời gian chờ nhưng tôi vẫn nhận được một vài mỗi giờ. Lỗi đến từ bất kỳ phương thức nào được gọi. Một trong những phương thức này không có tham số và trả về một bit dữ liệu. Một cái khác lấy nhiều dữ liệu làm tham số nhưng thực thi không đồng bộ. Các lỗi luôn bắt nguồn từ máy khách và không bao giờ tham chiếu bất kỳ mã nào trên máy chủ trong dấu vết ngăn xếp. Nó luôn kết thúc bằng:

 at System.Net.HttpWebRequest.GetResponse()
  at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)

Trên máy chủ: Tôi đã thử (và hiện có) các cài đặt ràng buộc sau:

maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647"

Nó dường như không có tác động.

Tôi đã thử (và hiện có) các cài đặt điều chỉnh sau:

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

Nó dường như không có tác động.

Tôi hiện có các cài đặt sau cho dịch vụ WCF.

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]

Tôi đã chạy với ConcurrencyMode.Multiplemột lúc, và lỗi vẫn xảy ra.

Tôi đã thử khởi động lại IIS, khởi động lại SQL Server cơ bản của mình, khởi động lại máy. Tất cả những điều này dường như không có tác động.

Tôi đã thử tắt tường lửa của Windows. Nó dường như không có tác động.

Trên máy khách, tôi có các cài đặt sau:

maxReceivedMessageSize="2147483647"

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

Khách hàng của tôi đóng các kết nối của nó:

var client = new MyClient();

try
{
    return client.GetConfigurationOptions();
}
finally
{
    client.Close();
}

Tôi đã thay đổi cài đặt đăng ký để cho phép nhiều kết nối đi hơn:

MaxConnectionsPerServer=24, MaxConnectionsPer1_0Server=32.

Tôi vừa mới thử SvcTraceViewer.exe. Tôi đã tìm cách bắt được một ngoại lệ ở phía khách hàng. Tôi thấy rằng thời lượng của nó là 1 phút. Nhìn vào dấu vết phía máy chủ, tôi có thể thấy rằng máy chủ không nhận thức được ngoại lệ này. Thời lượng tối đa tôi có thể thấy là 10 giây.

Tôi đã xem xét các kết nối cơ sở dữ liệu đang hoạt động sử dụng exec sp_whotrên máy chủ. Tôi chỉ có một vài (2-3). Tôi đã xem xét các kết nối TCP từ một máy khách sử dụng TCPview. Nó thường là khoảng 2-3 và tôi đã thấy lên đến 5 hoặc 6.

Nói một cách đơn giản, tôi đang bối rối. Tôi đã thử mọi thứ tôi có thể tìm thấy, và chắc hẳn còn thiếu một thứ rất đơn giản mà một chuyên gia WCF có thể nhìn thấy. Tôi cảm thấy ruột gan rằng có thứ gì đó đang chặn các khách hàng của tôi ở cấp thấp (TCP), trước khi máy chủ thực sự nhận được thông báo và / hoặc có thứ gì đó đang xếp hàng các tin nhắn ở cấp máy chủ và không bao giờ để chúng xử lý.

Nếu bạn có bất kỳ bộ đếm hiệu suất nào mà tôi nên xem, vui lòng cho tôi biết. (vui lòng cho biết giá trị nào là xấu, vì một số bộ đếm này rất khó giải mã). Ngoài ra, làm cách nào tôi có thể ghi kích thước thư WCF? Cuối cùng, có bất kỳ công cụ nào của chúng tôi ở đó cho phép tôi kiểm tra xem tôi có thể thiết lập bao nhiêu kết nối giữa máy khách và máy chủ của mình (độc lập với ứng dụng của tôi)

Cảm ơn vì đã dành thời gian cho tôi!

Thông tin bổ sung được thêm vào ngày 20 tháng 6:

Ứng dụng WCF của tôi hoạt động tương tự như sau.

while (true)
{
   Step1GetConfigurationSettingsFromServerViaWCF(); // can change between calls
   Step2GetWorkUnitFromServerViaWCF();
   DoWorkLocally(); // takes 5-15minutes. 
   Step3SendBackResultsToServerViaWCF();
}

Sử dụng WireShark, tôi đã thấy rằng khi lỗi xảy ra, tôi có năm lần truyền lại TCP sau đó là đặt lại TCP sau đó. Tôi đoán là RST đến từ WCF giết chết kết nối. Báo cáo ngoại lệ tôi nhận được là từ Bước 3 hết thời gian.

Tôi đã phát hiện ra điều này bằng cách xem luồng tcp "tcp.stream eq 192". Sau đó, tôi đã mở rộng bộ lọc của mình thành "tcp.stream eq 192 và http và http.request.method eq POST" và thấy 6 POST trong luồng này. Điều này có vẻ kỳ lạ, vì vậy tôi đã kiểm tra với một luồng khác chẳng hạn như tcp.stream eq 100. Tôi có ba POST, điều này có vẻ bình thường hơn một chút vì tôi đang thực hiện ba cuộc gọi. Tuy nhiên, tôi đóng kết nối của mình sau mỗi cuộc gọi WCF, vì vậy tôi đã mong đợi một cuộc gọi trên mỗi luồng (nhưng tôi không biết nhiều về TCP).

Điều tra thêm một chút, tôi đổ tải gói tin http vào đĩa để xem sáu này gọi ở đâu.

1) Step3
2) Step1
3) Step2
4) Step3 - corrupted
5) Step1
6) Step2

Tôi đoán là hai máy khách đồng thời đang sử dụng cùng một kết nối, đó là lý do tại sao tôi thấy các bản sao. Tuy nhiên, tôi vẫn còn một số vấn đề khác mà tôi không thể hiểu được:

a) Tại sao gói tin bị hỏng? Sán mạng ngẫu nhiên - có thể không? Tải được giải nén bằng cách sử dụng mã mẫu này: http://msdn.microsoft.com/en-us/library/ms751458.aspx - Mã có thể bị lỗi đôi khi được sử dụng đồng thời không? Tôi nên kiểm tra mà không có thư viện gzip.

b) Tại sao tôi sẽ thấy bước 1 và bước 2 chạy SAU KHI hoạt động bị hỏng hết thời gian chờ? Đối với tôi, dường như những hoạt động này không nên xảy ra. Có lẽ tôi không nhìn đúng luồng vì hiểu biết của tôi về TCP còn thiếu sót. Tôi có các luồng khác diễn ra cùng lúc. Tôi nên điều tra các luồng khác - xem nhanh các luồng 190-194 cho thấy rằng ĐĂNG BƯỚC 3 có dữ liệu trọng tải thích hợp (không bị hỏng). Thúc đẩy tôi nhìn lại thư viện gzip.


Jason - bạn đã bao giờ giải quyết vấn đề này chưa? Đó có phải là cài đặt DefaultConnectionLimit không?
SFun28

2
@JasonKealey - Trái ngược với nhiều câu hỏi khác, bạn không thể bị buộc tội là không cố gắng cho bản thân trước khi đăng câu hỏi :) Tôi thích rằng câu hỏi của bạn rất chi tiết và bao gồm tất cả các chi tiết quan trọng. Các triệu chứng bạn mô tả trông rất giống của tôi, vì vậy tôi hy vọng giải pháp cũng giống như vậy :)
Øyvind Bråthen

Câu trả lời:


51

Nếu bạn đang sử dụng .Net client thì có thể bạn chưa thiết lập

//This says how many outgoing connection you can make to a single endpoint. Default Value is 2
System.Net.ServicePointManager.DefaultConnectionLimit = 200;

đây là câu hỏi và câu trả lời ban đầu của WCF Service Throttling

Cập nhật :

Cấu hình này đi trong ứng dụng khách .Net có thể đang khởi động hoặc bất cứ khi nào nhưng trước khi bắt đầu các thử nghiệm của bạn.

Hơn nữa, bạn có thể có nó trong tệp app.config cũng như sau

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

Điều này có vẻ đầy hứa hẹn. Tôi đã bao gồm điều này để được kiểm tra trong lần kiểm tra khả năng mở rộng tiếp theo của tôi. Nó trông giống hệt như kiểu cài đặt ngẫu nhiên có thể khiến nó gặp sự cố :) Cảm ơn vì con trỏ.
Jason Kealey

1
@Jason: Nếu bạn là lập trình viên máy chủ, bạn biết tầm quan trọng của việc duy trì khả năng mở rộng của máy chủ trong tay bạn và cũng là một người hiện đang gặp phải vấn đề đồng thời ngay cả sau khi sử dụng ở trên. Xin vui lòng nếu bạn có thể xem xét câu hỏi sau stackoverflow.com/questions/2637175/wcf-network-cost, tóm lại, tôi đang phải chịu đựng độ trễ 31ms giữa máy khách và máy chủ và cần giảm nó.
Mubashar

3
Chỉ mất một năm, nhưng cuối cùng tôi đã chạy một bài kiểm tra căng thẳng khác trên ứng dụng với bộ cờ này. Vấn đề dường như đã được giải quyết, vì vậy tôi sẽ cho bạn câu trả lời tốt nhất. Tôi sẽ không ngạc nhiên khi đây là phần cuối cùng của câu đố được yêu cầu nhưng tất cả các yếu tố khác cần phải có để đảm bảo lỗi không xảy ra. Cảm ơn rất nhiều!
Jason Kealey

2
@Aris: Trong ứng dụng máy khách .net, khi khởi động hoặc bất cứ nơi nào bạn đặt cấu hình chung của mình, nếu bạn muốn giữ cấu hình có thể cấu hình, bạn có thể thêm nó vào tệp cấu hình cũng như sau <system.net> <connectionManagement> <add maxconnection = "200" address = "*" /> </connectionManagement> </system.net>
Mubashar

3

Nếu bạn chưa thử - hãy đóng gói Hoạt động WCF phía máy chủ của bạn trong các khối try / Cuối cùng và thêm ghi nhật ký để đảm bảo chúng thực sự quay trở lại.

Nếu những điều đó cho thấy rằng Hoạt động đang hoàn thành, thì bước tiếp theo của tôi sẽ là chuyển sang cấp thấp hơn và xem xét lớp vận chuyển thực tế.

Wireshark hoặc một công cụ bắt gói tương tự khác có thể khá hữu ích vào thời điểm này. Tôi giả sử điều này đang chạy qua HTTP trên cổng tiêu chuẩn 80.

Chạy Wireshark trên máy khách. Trong Tùy chọn khi bạn bắt đầu chụp, hãy đặt bộ lọc chụp thành tcp http and host service.example.com - điều này sẽ giảm lượng lưu lượng truy cập không liên quan.

Nếu bạn có thể, hãy sửa đổi ứng dụng khách của bạn để thông báo cho bạn thời gian bắt đầu chính xác của cuộc gọi và thời gian hết thời gian chờ xảy ra. Hoặc chỉ cần giám sát nó chặt chẽ.

Khi gặp lỗi, bạn có thể duyệt qua nhật ký Wireshark để tìm điểm bắt đầu cuộc gọi. Nhấp chuột phải vào gói đầu tiên mà khách hàng của bạn đang gọi nó (Nên là GET /service.svc hoặc POST /service.svc) và chọn Theo dõi TCP Stream.

Wireshark sẽ giải mã toàn bộ Hội thoại HTTP, vì vậy bạn có thể đảm bảo rằng WCF thực sự đang gửi lại phản hồi.


Tôi đã đăng nhập trên máy chủ - không có lỗi ở đầu đó. Tôi đang chạy WireShark ngay bây giờ để xem những gì tôi có thể tìm thấy. Với lượng truy cập lớn, sẽ rất khó để phân tích nhưng tôi sẽ báo cáo lại nếu tôi có thể tìm thấy bất cứ điều gì.
Jason Kealey

Tôi đã chạy WireShark trong sáu giờ qua và thu thập được khoảng 60 nghìn khung hình. Chỉ có một ngoại lệ được khách hàng này báo cáo hôm nay. Tôi đã thấy một kết nối TCP được đánh dấu là RST (đặt lại), dường như sau khi gửi email lỗi, có thể là WCF đang ngắt kết nối. Tôi đã lưu trọng tải (525k) vào đĩa. Tôi đã xác minh rằng có 87 lời gọi khác có trọng tải có kích thước tương tự. Tôi đã thấy một vài lần truyền lại TCP, nhưng cũng thấy một số trong các cuộc gọi khác (điều đó không thất bại). Bắt đầu băn khoăn về phần cứng mạng + cáp của tôi.
Jason Kealey

Ngay cả trên mạng cục bộ, sự hiện diện của TCP Retransmits không hẳn là xấu. Nếu có thể kết nối vật lý hai trong số các điểm cuối với một công tắc duy nhất, thì điều đó có thể đáng để thử, nhưng tôi sẽ không hy vọng điều đó sẽ khắc phục được. Nếu bạn có thể - hãy tạo một ứng dụng khách rất cơ bản chỉ chuyển một số lưu lượng truy cập qua lại máy chủ của bạn và không có gì khác. Điều này có thể giúp loại bỏ bất kỳ sự cố nào trong ứng dụng của bạn có thể gây ra thời gian chờ.

Ngoài ra, bạn đề cập đến việc xem gói TCP Reset - máy chủ đã gửi bất kỳ loại phản hồi nào tại thời điểm đó (hoặc có lẽ nó đang chờ thêm dữ liệu)? Có sự chậm trễ đáng kể giữa RST và gói trước đó không?

Máy chủ ở xa. Tôi đang lên kế hoạch tạo một môi trường thử nghiệm cục bộ để xem điều đó có hữu ích không. Đối với RST, nó được gửi 34 giây sau lần truyền cuối cùng trong năm lần Truyền lại TCP. (Khoảng thời gian từ 1 đến 8 giây giữa các lần truyền lại). Điều đó có cung cấp cho bạn bất kỳ manh mối nào không?
Jason Kealey

2

từ: http://www.codeproject.com/KB/WCF/WCF_Operation_Timeout_.aspx

Để tránh lỗi hết thời gian chờ này, chúng ta cần cấu hình thuộc tính OperationTimeout cho Proxy trong mã máy khách WCF. Cấu hình này là một cái gì đó mới không giống như các cấu hình khác như Gửi thời gian chờ, Thời gian chờ nhận, v.v., mà tôi đã thảo luận ở phần đầu của bài viết. Để đặt cấu hình thuộc tính thời gian chờ hoạt động này, chúng tôi phải truyền proxy của mình tới IContextChannel trong ứng dụng khách WCF trước khi gọi các phương thức hợp đồng hoạt động.


Tôi đã thử điều này. Bất kể thời gian chờ tôi đặt, nó vẫn hết thời gian nhưng điều này không có ý nghĩa gì vì hoạt động không lâu như vậy và vì tất cả các ứng dụng khách khác thực hiện cùng một truy vấn hoạt động trong thời gian này.
Jason Kealey

Các thử nghiệm của tôi đã chứng minh rằng OperationTimeout chỉ đơn giản là ghi đè GetTimeout từ cấu hình. Vì vậy, nó không có ích gì cả.
dudeNumber 4

2

Tôi đang gặp một vấn đề tương tự. Trong quá khứ, điều này liên quan đến vấn đề tuần tự hóa. Nếu bạn vẫn gặp sự cố này, bạn có thể xác minh rằng bạn có thể tuần tự hóa chính xác các đối tượng bạn đang trả lại hay không. Cụ thể, nếu bạn đang sử dụng các đối tượng Linq-To-Sql có mối quan hệ, sẽ có các vấn đề tuần tự hóa đã biết nếu bạn đặt một tham chiếu ngược trên một đối tượng con vào đối tượng mẹ và đánh dấu tham chiếu ngược đó là DataMember.

Bạn có thể xác minh tuần tự hóa bằng cách viết một ứng dụng bảng điều khiển để tuần tự hóa và giải mã hóa các đối tượng của bạn bằng DataContractSerializer ở phía máy chủ và bất kỳ phương pháp tuần tự hóa nào mà ứng dụng khách của bạn sử dụng. Ví dụ: trong ứng dụng hiện tại của chúng tôi, chúng tôi có cả ứng dụng khách WPF và Compact Framework. Tôi đã viết một ứng dụng bảng điều khiển để xác minh rằng tôi có thể tuần tự hóa bằng DataContractSerializer và giải mã hóa bằng XmlDesserializer. Bạn có thể thử điều đó.

Ngoài ra, nếu bạn đang trả lại các đối tượng Linq-To-Sql có các tập hợp con, bạn có thể cố gắng đảm bảo rằng bạn đã tải chúng một cách hăng hái ở phía máy chủ. Đôi khi, do tải chậm, các đối tượng được trả về không được điền và có thể gây ra hành vi mà bạn đang thấy khi yêu cầu được gửi đến phương thức dịch vụ nhiều lần.

Nếu bạn đã giải quyết được vấn đề này, tôi rất muốn biết cách thực hiện vì tôi cũng đang gặp khó khăn. Tôi đã xác minh rằng vấn đề của tôi không phải là tuần tự hóa, vì vậy tôi rất khó hiểu.

CẬP NHẬT: Tôi không chắc liệu nó có giúp được gì cho bạn hay không nhưng Công cụ xem theo dõi dịch vụ vừa giải quyết vấn đề của tôi sau 5 ngày trải nghiệm rất giống với trải nghiệm của bạn. Bằng cách thiết lập theo dõi và sau đó xem xét XML thô, tôi đã tìm thấy các ngoại lệ đang gây ra sự cố tuần tự hóa của tôi. Nó liên quan đến các đối tượng Linq-to-SQL mà đôi khi có nhiều đối tượng con hơn mức có thể được tuần tự hóa thành công. Thêm phần sau vào tệp web.config của bạn sẽ cho phép theo dõi:

<sharedListeners>
    <add name="sharedListener"
         type="System.Diagnostics.XmlWriterTraceListener"
         initializeData="c:\Temp\servicetrace.svclog" />
  </sharedListeners>
  <sources>
    <source name="System.ServiceModel" switchValue="Verbose, ActivityTracing" >
      <listeners>
        <add name="sharedListener" />
      </listeners>
    </source>
    <source name="System.ServiceModel.MessageLogging" switchValue="Verbose">
      <listeners>
        <add name="sharedListener" />
      </listeners>
    </source>
  </sources>

Tệp kết quả có thể được mở bằng Công cụ xem theo dõi dịch vụ hoặc chỉ bằng IE để kiểm tra kết quả.


2

Bạn có đang đóng kết nối với dịch vụ WCF giữa các yêu cầu không? Nếu không, bạn sẽ thấy thời gian chờ chính xác này (cuối cùng).


2

Tôi vừa giải quyết được sự cố và nhận thấy rằng các nút trong tệp App.config đã được định cấu hình sai.

<client>
<endpoint name="WCF_QtrwiseSalesService" binding="wsHttpBinding" bindingConfiguration="ws" address="http://cntgbs1131:9005/MyService/TGE.ISupplierClientManager" contract="*">
</endpoint>
</client>

<bindings>
    <wsHttpBinding>
        <binding name="ws" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
            <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
            <**security mode="None">**
                <transport clientCredentialType="None"></transport>
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

Xác nhận cấu hình của bạn trong nút <security>, giá trị thuộc tính "mode" là "None". Nếu giá trị của bạn là "Vận chuyển", lỗi sẽ xảy ra.


Điều này không ảnh hưởng đến bảo mật? Nếu vậy điều này có thể không phải là một giải pháp cho hầu hết các ứng dụng thực tế
Veverke

0

Bạn đã thử sử dụng clientVia để xem tin nhắn được gửi, sử dụng bộ công cụ SOAP hay thứ gì đó tương tự không? Điều này có thể giúp xem liệu lỗi đến từ chính máy khách hay từ một nơi khác.


Bạn có biết công cụ nào gần đây hơn bộ công cụ SOAP không dùng nữa sẽ giúp tôi ghi thông tin này dễ dàng hơn trong các cuộc gọi WCF không?
Jason Kealey

Bộ công cụ SOAPdeprecated
Kiquenet

0

Bạn đã kiểm tra dấu vết WCF chưa? WCF có xu hướng nuốt các ngoại lệ và chỉ trả về ngoại lệ cuối cùng, đó là thời gian chờ mà bạn nhận được, vì điểm kết thúc không trả về bất kỳ điều gì có ý nghĩa.


Tôi đã thử SvcTraceViewer và ngoại lệ duy nhất nó báo cáo là hết thời gian chờ (trên máy khách). Không có gì được báo cáo trên máy chủ.
Jason Kealey

Mở tất cả các tùy chọn trên dấu vết, bạn có thể không mở tất cả các tùy chọn dấu vết. Ngoài ra, hãy kiểm tra cả tệp theo dõi sự kiện và tệp theo dõi tin nhắn.
Miki Watts

0

Bạn cũng sẽ nhận được lỗi này nếu bạn đang chuyển một đối tượng trở lại máy khách có chứa thuộc tính kiểu enum không được đặt theo mặc định và enum đó không có giá trị ánh xạ thành 0. tức là enum MyEnum{ a=1, b=2};


0

Có vẻ như thông báo ngoại lệ này khá chung chung và có thể nhận được do nhiều lý do. Chúng tôi đã gặp phải vấn đề này khi triển khai ứng dụng khách trên các máy Windows 8.1. Ứng dụng khách WCF của chúng tôi chạy bên trong dịch vụ windows và liên tục thăm dò dịch vụ WCF. Dịch vụ windows chạy dưới quyền người dùng không phải quản trị viên. Sự cố đã được khắc phục bằng cách đặt clientCredentialType thành "Windows" trong cấu hình WCF để cho phép xác thực chuyển qua, như sau:

      <security mode="None">
        <transport clientCredentialType="Windows" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>

0

Tôi không phải là chuyên gia WCF nhưng tôi đang tự hỏi nếu bạn không gặp phải bảo vệ DDOS trên IIS. Tôi biết từ kinh nghiệm rằng nếu bạn chạy một loạt các kết nối đồng thời từ một máy khách đến một máy chủ tại một thời điểm nào đó máy chủ ngừng phản hồi các cuộc gọi vì nó nghi ngờ có cuộc tấn công DDOS. Nó cũng sẽ giữ các kết nối mở cho đến khi chúng hết thời gian chờ để làm chậm khách hàng trong các cuộc tấn công của mình.

Tuy nhiên, nhiều kết nối đến từ các máy / IP khác nhau không phải là vấn đề.

Có thêm thông tin trong bài đăng MSDN này:

http://msdn.microsoft.com/en-us/library/bb463275.aspx

Kiểm tra sự phát triển MaxConcurrentSession.


Tôi cảm thấy rằng đây là những gì đang xảy ra, từ mọi thứ tôi đã thấy, tuy nhiên tôi có (trên máy chủ): <serviceThrottling maxConcurrentCalls = "150" maxConcurrentInstances = "150" maxConcurrentSessions = "150" /> <serviceDebug includeExceptionDetailInFaults = "true" /> Có bất kỳ màn hình hiệu suất hoặc nhật ký IIS nào mà tôi có thể theo dõi để xem điều này có xảy ra không?
Jason Kealey
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.