Tôi có một ứng dụng WCF được lưu trữ trong IIS (được viết bằng C#/.Net 4
). Theo thời gian, Số lượng xử lý của quy trình tăng theo kiểu thời trang tuyến tính nhiều hơn hoặc ít hơn (tăng lên 30.000 trước khi quá trình tái chế). Theo SysInternals Process Explorer, phần lớn các xử lý mà quy trình có loại Thread
. Tuy nhiên, theo Performance Monitor, số lượng các chủ đề vẫn còn nhiều hoặc ít liên tục (khoảng 40)."Rò rỉ" Xử lý chủ đề
Rõ ràng, tôi đang làm điều gì đó sai và đang bị rò rỉ Thread Handles
. Tuy nhiên, tôi không rõ chính xác những gì một Thread Handle
là trong bối cảnh này. Tôi đã giả định rằng nó là một xử lý cho một sợi, nhưng kể từ khi số lượng các chủ đề còn lại phù hợp, tôi không thấy làm thế nào số lượng xử lý ngày càng tăng. Và, tôi không thể nghĩ ra cách nào để giữ một tay cầm vào một sợi chỉ, trong khi chính sợi chỉ biến mất. Hơn nữa, tôi không rõ ràng tạo chủ đề mới (Tôi đang sử dụng ThreadPool
ở những nơi).
Rõ ràng, tôi đang thiếu thứ gì đó. Nhưng cái gì?
Bạn có dịch vụ WCF là SingleInstance, PerCall hoặc Session không? Bạn đang sử dụng một container IoC ở đó? – Jordi
Bạn đang tự quản lý các chủ đề hay bạn đang sử dụng nhóm chủ đề? Loại chủ đề nào sử dụng ứng dụng của bạn (chúng ta đang nói về các luồng mà IIS thực hiện -> bị giới hạn bởi chính IIS, hay các luồng của riêng bạn)? – Rafa
Dịch vụ WCF là một cá thể đơn và đa đồng thời. Không có Container IOC. –