IIS: Thời gian chờ nhàn rỗi so với thời gian chờ đợi


97

Trong IIS, có hai lĩnh vực (tốt, nhiều hơn hai) nơi có thể tái chế:

  1. Trong phần "Mô hình quy trình" → "Thời gian chờ không hoạt động" (20 phút mặc định)

  1. Trong phần "Tái chế" → "Khoảng thời gian thông thường" (mặc định là 1740 phút)

Câu hỏi của tôi là:

  1. Sự khác biệt giữa hai phương pháp là gì?
  2. Những tác động tiêu cực của việc cài đặt chúng thành 0 là gì?

Câu trả lời:


97

Idle Timeout là nếu không có hành động nào được yêu cầu từ ứng dụng web của bạn, quá trình này sẽ giảm và giải phóng mọi thứ khỏi bộ nhớ

Recycle là một hành động bắt buộc trên ứng dụng mà ứng dụng đã xử lý của bạn bị đóng và bắt đầu lại, vì mục đích rò rỉ bộ nhớ và tình trạng hệ thống

Tác động tiêu cực của cả hai thường là việc sử dụng trạng thái Phiên và Ứng dụng của bạn sẽ bị mất nếu bạn gây rối với Recycle với thời gian nhanh hơn. (Người dùng đã đăng nhập, v.v. sẽ bị đăng xuất, nếu họ sắp "kiểm tra" tất cả sẽ bị bị mất ", đó là lý do tại sao việc tái chế có giá trị hết thời gian chờ lớn như vậy, thời gian chờ nhàn rỗi không quan trọng vì dù sao cũng không có ai đăng nhập và tính ra 20 phút không có hành động họ vẫn" mua sắm "

Điều tích cực sẽ là loại bỏ thời gian chờ đợi vì trang web của bạn sẽ phản hồi nhanh hơn trong phản hồi "đầu tiên" nếu nó không phải là một trang web hoạt động cao, nơi người dùng sẽ phải đợi nó tải nếu bạn có 1 người dùng cứ sau 20 phút. Nói. Vì vậy, một trang web nhận được ít hơn 1 lần trong 20 phút thực sự bạn sẽ muốn tăng giá trị này vì trang web phải tải lại từ đầu cho mỗi người dùng. nhưng nếu bạn đặt giá trị này thành 0 trong một thời gian dài, bất kỳ bộ nhớ nào bị rò rỉ mã có thể trong một khoảng thời gian nhất định, sẽ chiếm toàn bộ máy chủ.


Cảm ơn! Điều đó có lý. Tình huống khó xử chính của tôi là "lần tải đầu tiên" diễn ra rất lâu. Tôi nghĩ rằng nếu tôi đặt cả hai điều này thành 0 thì tôi có thể phá vỡ điều đó. Tuy nhiên, vấn đề rò rỉ bộ nhớ là một vấn đề nan giải. Có cách nào để "tái chế" nhưng sau đó "buộc" một yêu cầu để "truy cập lần đầu tiên" kết thúc và được thực hiện ngay sau khi tái chế? Hoặc có thể lên lịch tái chế vào lúc 2 giờ sáng và sau đó lên lịch "truy cập lần đầu tiên" vào lúc 2 giờ 30 sáng? Có cách nào trong IIS để làm điều đó không?
Ricky

@Ricky Tôi cũng đang gặp phải vấn đề về lượt xem đầu tiên. Bạn cần đặt startMode nhóm ứng dụng của mình thành AlwaysRunning: msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Steve Hibbert

Điều này cũng hữu ích đối với tôi: simple-talk.com/blogs/2013/03/05/…
Steve Hibbert

3
@Silvermind - Nếu phiên được lưu trữ trong quá trình, nó sẽ không được sao chép khi tái chế. Xem tại đây .
BornToCode

31

Từ đây :

Một cách để tiết kiệm tài nguyên hệ thống là định cấu hình cài đặt thời gian chờ nhàn rỗi cho các quy trình công nhân trong một nhóm ứng dụng. Khi các cài đặt này được định cấu hình, quy trình công nhân sẽ ngừng hoạt động sau một khoảng thời gian không hoạt động cụ thể. Giá trị mặc định cho thời gian chờ không hoạt động là 20 phút.

Ngoài ra, hãy kiểm tra Tại sao vòng lặp ứng dụng mặc định của IIS được đặt thành 1740 phút?

Nếu bạn chỉ có một vài trang web trên máy chủ của mình và bạn muốn chúng luôn tải nhanh thì hãy đặt giá trị này thành 0. Nếu không, khi bạn có 20 phút mà không có bất kỳ lưu lượng truy cập nào thì nhóm ứng dụng sẽ kết thúc để có thể khởi động lại vào lần truy cập tiếp theo. Vấn đề là lần đầu tiên truy cập vào một nhóm ứng dụng cần tạo một quy trình công nhân w3wp.exe mới, quá trình này chậm vì nhóm ứng dụng cần được tạo, ASP.NET hoặc một khung công tác khác cần được tải và sau đó ứng dụng của bạn cần được nạp. Quá trình đó có thể mất vài giây. Do đó, tôi đặt điều đó thành 0 mỗi khi có cơ hội, trừ khi nó dành cho một máy chủ lưu trữ rất nhiều trang web không phải lúc nào cũng cần chạy.


6

IIS hiện có

Idle Time-out Action : Suspend cài đặt

Tạm dừng chỉ là đóng băng quá trình và nó hiệu quả hơn nhiều so với việc hủy quá trình.


0

Tôi đã kế thừa một ứng dụng dành cho máy tính để bàn thực hiện các cuộc gọi đến một loạt các Dịch vụ Web trên IIS. Các dịch vụ web (cũng) phải có thể chạy các quy trình được định thời gian, một cách độc lập (không cần bật ứng dụng khách). Do đó tất cả đều có bộ hẹn giờ. Bộ hẹn giờ dịch vụ web đang tắt (rò rỉ bộ nhớ?) Nên chúng tôi đặt thời gian Chờ thành 0 và bộ hẹn giờ vẫn bật.

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.