2009-03-04 25 views
7

Tôi đang chạy vào một số vấn đề về hiệu suất bằng cách sử dụng trình xử lý chung để triển khai IHttpAsyncHandler. Theo cách đơn giản nhất, trình xử lý nhận được yêu cầu GET và 20 giây sau đó kết thúc phản hồi sau khi ghi '< timeout />' vào phản hồi.Lỗi IIS 7.0 503 với trình xử lý chung (.ashx) triển khai IHttpAsyncHandler

Khi đóng búa .ashx với 10000-20000 yêu cầu đồng thời, nó không thành công với 503 máy chủ không khả dụng sau 5000 yêu cầu chính xác. Khi chuyển sang chế độ đồng bộ và kết thúc yêu cầu ngay lập tức, sự cố sẽ biến mất.

Tôi đã sửa đổi một số cài đặt, nhưng điều duy nhất tôi đã đạt được là hạ ngưỡng yêu cầu mà tại đó lỗi này xảy ra.

Dưới đây là tóm tắt các thiết lập tôi đã đùa giỡn với:

Machine.config:

<configuration> 
    ... 
    <system.web> 
     ... 
     <processModel enable="true" requestQueueLimit="10000"/> 
     ... 

web.config:

<configuration> 
    ... 
    <system.web> 
     ... 
     <httpRuntime enable="true" appRequestQueueLimit="10000"/> 
     ... 

IIS Manager> ApplicationPools> Cài đặt nâng caoNếu bạn không chắc chắn, có vẻ như các cài đặt này hoạt động tốt và tốt nếu các yêu cầu đồng bộ, nhưng khi không đồng bộ, tôi dường như không thể vượt qua chính xác 5000 yêu cầu trước khi máy chủ bắt đầu nói tôi đi. Nếu tôi đặt mọi thứ thấp hơn (không thể nhớ chính xác cài đặt nào từ trên, nhưng tôi đã thử tất cả), thì số 503 sẽ tăng theo, nhưng tôi không bao giờ có thể dừng nó xảy ra vượt quá 5000 khi chịu tải trọng nghiêm trọng .

Dường như có một số cài đặt nằm rải rác ở vô số nơi có thể ảnh hưởng đến điều này, nhưng 5000 dường như khá được đặt trong đá. Tôi thấy here rằng appRequestQueueLimit không thể vượt quá 5000, nhưng không thể tìm thêm thông tin về điều này và tự hỏi nếu đây là thông tin sai lạc.

Có loại cài đặt "kiểm soát lũ" nào trong IIS có thể giới hạn một máy chủ lưu trữ không quá 5000 yêu cầu không? Làm thế nào tôi có thể nhận được IIS để xử lý nhiều hơn 5000 yêu cầu đồng bộ không đồng bộ?

Chỉnh sửa2: Có bất kỳ quầy hoặc chỉ báo nào khác có giới hạn nào có thể bị vượt quá không và tôi sẽ điều tra thêm như thế nào?

Edit: Đây là mã loadgenerator:

using System; 
using System.Net; 
using System.Threading; 

namespace HammerTime 
{ 
    class Program 
    { 
     private static int counter = 0; 
     static void Main(string[] args) 
     { 
      var limit = 5000; 
      ServicePointManager.DefaultConnectionLimit=limit; 
      for (int i = 0; i < limit;++i) 
      { 
       StartWebRequest(i.ToString()); 

      } 
      Console.ReadLine(); 
     } 

     private static void StartWebRequest(string channelId) 
     { 
      string uri = "http://spender2008/test/Test.ashx?channel="+channelId; 
      HttpWebRequest request = (HttpWebRequest) WebRequest.Create(uri); 
      request.BeginGetResponse(responseHandler, request); 
     } 

     private static void responseHandler(IAsyncResult ar) 
     { 
      try 
      { 
       HttpWebRequest state = (HttpWebRequest)ar.AsyncState; 
       HttpWebResponse response = (HttpWebResponse)state.EndGetResponse(ar); 

      } 
      catch(Exception e) 
      { 
       Console.WriteLine(e.Message); 
      } 
      finally 
      { 
       Console.WriteLine(Interlocked.Increment(ref counter)); 
      } 

     } 
    } 
} 

Trả lời

5

OK. Đã sửa lỗi ... rất nhiều nhờ có this bài đăng để xóa một vài chi tiết.

Để loại bỏ 503 lỗi cần 3 thay đổi cấu hình khác nhau:

máy.cấu hình:

<configuration> 
    ... 
    <system.web> 
     ... 
     <processModel enable="true" requestQueueLimit="100000"/> 

IIS Manager> ApplicationPools> Advanced Settings

Queue Length : 65535 

và cuối cùng (các mảnh còn thiếu của câu đố), dòng lệnh:

appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000 

Web Cài đặt .config được đề cập trong bài đăng chính là không liên quan.

10000 kết nối đồng thời, không có vấn đề gì. Cảm ơn vì sự giúp đỡ!

+0

Cảm ơn bạn đã chia sẻ giải pháp, tôi đã nhận được màn hình trắng trắng 503 chết khi một trang web có nhiều lưu lượng truy cập vì lý do nào đó, appcmd đã khắc phục sự cố –

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