Tái chế
Tái chế thường là * trong đó IIS bắt đầu một quy trình mới như một thùng chứa cho ứng dụng của bạn và sau đó cung cấp quy trình cũ cho ShutdownTimeLimit để loại bỏ ý định của chính nó trước khi nó bị giết.
* - thường: xem DisallowOverlickingRotation / "Tắt cài đặt tái chế chồng chéo"
Nó là phá hoại , trong đó quá trình ban đầu và tất cả các thông tin trạng thái của nó bị loại bỏ. Sử dụng trạng thái phiên ngoài quy trình (ví dụ: Máy chủ trạng thái hoặc cơ sở dữ liệu hoặc thậm chí là cookie nếu trạng thái của bạn nhỏ) có thể cho phép bạn giải quyết vấn đề này.
Nhưng theo mặc định, nó bị chồng chéo - có nghĩa là thời gian ngừng hoạt động được giảm thiểu do quá trình mới bắt đầu và được nối với hàng đợi yêu cầu, trước khi thông báo cũ "bạn có [ShutdownTimeLimit] mất vài giây. Hãy tuân thủ."
Cài đặt
Đối với câu hỏi của bạn: tất cả các cài đặt trên trang đó kiểm soát tái chế theo một cách nào đó. "Tắt máy" có thể được mô tả là "tái chế chủ động" - trong đó chính quá trình quyết định đã đến lúc phải đi và thoát ra một cách có trật tự.
Tái chế phản ứng là nơi WAS phát hiện vấn đề và bắn quá trình (sau khi thiết lập W3WP thay thế phù hợp).
Bây giờ, đây là một số thứ có thể gây ra việc tái chế dạng này hay dạng khác:
- một ISAPI quyết định nó không lành mạnh
- bất kỳ sự cố mô-đun
- thời gian chờ
- hạn chế CPU
- điều chỉnh thuộc tính nhóm ứng dụng
- vì mẹ của bạn có thể đã hét lên tại một thời điểm: "Dừng chọn nó, hoặc nó sẽ không bao giờ tốt hơn!"
- "ping" thất bại * không thực sự ping mỗi se, vì nó sử dụng một đường ống có tên - thêm "phát hiện sự sống"
- tất cả các cài đặt trong ảnh chụp màn hình ở trên
Phải làm gì:
Nói chung là:
Vô hiệu hóa thời gian chờ nhàn rỗi . 20 phút không hoạt động = bùng nổ! Quy trình mới về yêu cầu đến tiếp theo. Đặt nó thành không.
Vô hiệu hóa khoảng thời gian thông thường - mặc định 29 giờ đã được các bên khác nhau mô tả là "điên rồ", "khó chịu" và "thông minh". Thật ra, chỉ có hai trong số đó là sự thật.
Tùy chọn bật DisallowRotationOnConfigChange (ở trên, Vô hiệu hóa Reycling để thay đổi cấu hình ) nếu bạn không thể ngừng chơi với nó - điều này cho phép bạn thay đổi bất kỳ cài đặt nhóm ứng dụng nào mà không báo hiệu ngay lập tức cho các tiến trình công nhân mà nó cần phải bị giết. Bạn cần tái chế thủ công Nhóm ứng dụng để các cài đặt có hiệu lực, cho phép bạn cài đặt trước các cài đặt và sau đó sử dụng cửa sổ thay đổi để áp dụng chúng thông qua quy trình tái chế của bạn.
Như một nguyên tắc chung, để lại ping kích hoạt . Đó là mạng lưới an toàn của bạn. Tôi đã thấy mọi người tắt nó đi và đôi khi trang web bị treo vô thời hạn, dẫn đến hoảng loạn ... vì vậy nếu cài đặt quá mạnh đối với ứng dụng phản hồi rõ ràng rất rất chậm của bạn, hãy lùi lại một chút và xem những gì bạn nhận được, thay vì tắt nó đi. (Trừ khi bạn có chế độ bán phá giá chế độ tự động được thiết lập cho W3WP treo thông qua quy trình giám sát của riêng bạn)
Điều đó đủ để khiến một quá trình cư xử tốt để sống mãi mãi. Nếu nó chết, chắc chắn, nó sẽ được thay thế. Nếu nó bị treo, ping nên chọn đó lên và một cái mới nên bắt đầu trong vòng 2 phút (theo mặc định; trường hợp xấu nhất calc nên: lên đến tần số ping + ping timeout + Thời hạn khởi động trước khi yêu cầu bắt đầu hoạt động trở lại).
Giới hạn CPU thường không thú vị, vì theo mặc định, nó bị tắt và dù sao nó cũng được cấu hình để không làm gì cả; nếu nó được cấu hình để giết quá trình, chắc chắn, đó sẽ là một trình kích hoạt tái chế. Bỏ nó đi. Lưu ý cho IIS 8.x, CPU Throttling cũng trở thành một tùy chọn.
AppPool (IIS) không phải là AppDomain (.Net) (nhưng có thể chứa một / một số)
Nhưng ... sau đó chúng tôi vào vùng đất .Net và tái chế AppDomain, điều này cũng có thể gây mất trạng thái. (Xem: https://bloss.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variabled-and-appdomain-rec đua / )
Phiên bản ngắn, bạn thực hiện điều đó bằng cách chạm vào tệp web.config trong thư mục nội dung của mình (một lần nữa bằng cách chọn!) Hoặc bằng cách tạo thư mục trong thư mục đó hoặc tệp ASPX hoặc .. những thứ khác ... và đó là về có sức tàn phá như tái chế Nhóm ứng dụng, trừ chi phí khởi động mã gốc (hoàn toàn là khái niệm mã được quản lý (.Net), do đó, chỉ có các công cụ mã được quản lý xảy ra ở đây).
Antivirus cũng có thể kích hoạt điều này khi nó quét các tệp web.config, gây ra thông báo thay đổi, gây ra ....