2010-12-31 6 views
21

Environment: Windows Server 2008 Enterprise, IIS 7.0, ASP.NET 2.0 (CLR), .NET 4.0Làm thế nào để tăng đề thread-pool trên IIS 7,0

Tôi có một ứng dụng ASP.NET không có trang và không có phiên (HttpHandler). Nó là một máy chủ streaming. Tôi sử dụng hai chủ đề để xử lý mỗi yêu cầu vì vậy nếu có 100 khách hàng được kết nối, thì 200 chủ đề được sử dụng. Đây là một máy chủ chuyên dụng và không có ứng dụng nào khác trên máy chủ.

Vấn đề là sau khi 200 ứng dụng được kết nối (dưới ứng suất thử nghiệm) từ chối khách hàng mới, nhưng nếu tôi tăng các chuỗi công nhân application pool (tạo vườn trên web) thì tôi có thể có 200 khách hàng mới hạnh phúc theo quy trình w3wp.

Tôi cảm thấy giới hạn của hồ bơi. NET đạt đến điểm đó và cần tăng nó.

Cảm ơn

+1

Có vẻ như bạn đang sử dụng threadpool của bạn cho các nhiệm vụ lâu dài và chạy vào một vấn đề mở rộng quy mô. Các luồng của bạn có hoạt động ở tốc độ tối đa hay chúng đang chặn? Bạn đã nghiên cứu triển khai không đồng bộ thay thế? – sisve

+2

Bạn đúng, chúng là những chủ đề dài hạn theo thiết kế. Như tôi đã nói đây là doanh nghiệp duy nhất của ứng dụng/máy chủ. Chủ đề được sử dụng đầy đủ và không bao giờ đi ngủ hoặc nhàn rỗi. Đây không phải là một ứng dụng 'ASP.NET' bình thường trong đó các chủ đề Async làm điều gì đó trong nền. Vì vậy, không có gì có thể làm tốt hơn cho thiết kế vì đây là bản chất của ứng dụng. – Xaqron

Trả lời

20

Nhìn vào các yếu tố applicationPool của aspnet.config của bạn:

<configuration> 
    <system.web> 
    <applicationPool 
     maxConcurrentRequestsPerCPU="5000" 
     maxConcurrentThreadsPerCPU="0" 
     requestQueueLimit="5000" /> 
    </system.web> 
</configuration> 

Một vị trí ví dụ là:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config 

Bạn cũng có thể muốn xem xét processModel (trong bạn machine.config).

+0

Tôi sử dụng Visual Studio 2010, lược đồ web.config không hỗ trợ thẻ như vậy, cũng trên trang web MSDN. Bất kỳ ý tưởng ? – Xaqron

+0

@Xaqron - Bạn đang nhắm mục tiêu phiên bản .NET nào? Đây là một tính năng .NET 4.0. Nó _is_ trên MSDN, như tôi đã liên kết. 'processModel' luôn ở đó. – Oded

+0

Tôi sử dụng .NET 4.0, nhưng nó không có trong web.config anyway 'ProcessModel' đã giải quyết được vấn đề của tôi vì không có ứng dụng nào khác trên máy chủ nhưng tôi sẽ rất vui khi biết tại sao lược đồ web.config của tôi không hỗ trợ' applicationPool'. – Xaqron