Làm cách nào tôi có thể làm nóng ứng dụng web asp.net mvc của mình sau khi nhóm ứng dụng tái chế?


23

Tôi đang chạy một ứng dụng web ASP.NET MVC trong IIS 8.0. Ứng dụng của tôi cần được làm nóng trước khi nhận yêu cầu. Chúng tôi đã có một quy trình để làm nóng ứng dụng tự động khi chúng tôi triển khai mã mới. Tuy nhiên, chúng ta đang thấy các sự kiện Tái chế App Pool định kỳ dẫn đến việc ứng dụng không được làm nóng.

Có cách thực hành tốt nhất để phát hiện sự kiện tái chế nhóm ứng dụng và thực thi tập lệnh hoặc mã nào đó không?

Câu trả lời:


55

Có một vài điều bạn có thể làm:

1. Khởi tạo ứng dụng

Bạn có thể sử dụng Mô-đun khởi tạo ứng dụng đi kèm với IIS 8.0

bạn có thể có một cái gì đó như thế này trong web.config

<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>

Điều này sẽ gửi yêu cầu đến thư mục gốc của ứng dụng của bạn ( initializationPage="/") mỗi khi ứng dụng của bạn tự động khởi động.

Bạn cũng có thể định cấu hình Chế độ bắt đầu cho nhóm ứng dụng của mình Always Running, nghĩa là mỗi khi IIS khởi động lại, nó sẽ đảm bảo khởi động nhóm ứng dụng của bạn ngay lập tức (điều này nếu từ nhấp chuột phải vào nhóm ứng dụng của bạn sau đóAdvanced Settings

nhập mô tả hình ảnh ở đây

Preloadcho chính trang web của bạn (nhấp chuột phải vào trang web sau Manage SiteđóAdvanced Settings

nhập mô tả hình ảnh ở đây

2. Vô hiệu hóa hết thời gian chờ

Ngoài ra, bạn có thể tắt idleTimeout (theo mặc định IIS sẽ tắt ứng dụng sau 20 phút hoạt động) bằng cách thay đổi in trong nhóm Idle Time-outứng dụng của bạn thành 0 (vô hạn)

nhập mô tả hình ảnh ở đây

3. Vô hiệu hóa tái chế định kỳ

đồng thời tắt Regular Time Interval (minutes)IIS theo mặc định sẽ tái chế ứng dụng của bạn sau mỗi 29 giờ.

nhập mô tả hình ảnh ở đây

Dành cho


3
Nhận xét về nhược điểm của các cài đặt này sẽ được đánh giá cao. Chắc chắn có một lý do họ không mặc định.
dùng42134

2
Chắc chắn, tiêu thụ bộ nhớ cao nếu bạn chạy nhiều trang web trên cùng một hộp IIS vì tất cả các trang web luôn tồn tại, dẫn đến mật độ trang web rất thấp. Cũng không có bảo vệ chống rò rỉ bộ nhớ trong các ứng dụng của bạn. Hãy nhớ rằng IIS đã xuất hiện trước khi các ngôn ngữ được quản lý trở nên phổ biến trên web và nhiều ứng dụng đang chạy các trình xử lý gốc bị rò rỉ bộ nhớ và trạng thái kỳ lạ nếu chạy trong một thời gian dài. Điều đó đã được thực hiện để giúp các sysadins phải thức dậy vào giữa đêm để thiết lập lại máy chủ do sự cố ứng dụng. Chúng vẫn được mặc định chủ yếu vì lý do so sánh ngược
ahmelsayed

1
Các lựa chọn thay thế trong IIS 7.5 - Windows Server 2008 R2 ?
Kiquenet

2
Bạn có thể làm cho Mô-đun khởi tạo ứng dụng cho IIS 7.5 cho # 1 hoạt động. # 2 và # 3 được áp dụng tương tự như IIS 7.5
ahmelsayed 21/07/2015

1
FYI cho những người sử dụng điều này: applicationInitializationđi vào<configuration><system.webServer>
Paul

1

Từ kinh nghiệm của tôi, Luôn luôn kích hoạt và tải trước cho phép không tăng tốc nhiều. Thời gian chờ đợi nhất là vào quá trình biên dịch động (có thể được sửa bằng trình biên dịch trước aspx) và tải các cụm vào bộ nhớ và bộ đệm.

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.