Làm cách nào để tắt thời gian chờ của nhóm ứng dụng trong IIS7?


Câu trả lời:


184

Có, đặt giá trị thời gian chờ không thành 0 sẽ vô hiệu hóa thời gian chờ không hoạt động.

Điều kỳ lạ là điều này không được ghi nhận trong các tài liệu MS nhưng bằng chứng của tôi cho điều này phát sinh từ:

  • Lược đồ cài đặt IIS

    Nếu bạn có một cái nhìn vào lược đồ cài đặt IIS trong:

    C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml

    Định nghĩa lược đồ cho idleTimeoutdưới

    <sectionSchema name="system.applicationHost/applicationPools">

    nó có vẻ như:

    <attribute name="idleTimeout" 
           type="timeSpan" 
           defaultValue="00:20:00" 
           validationType="timeSpanRange" 
           validationParameter="0,2592000,60"/>

    Nếu bạn nhìn vào validationParameterthuộc tính, chúng ta sẽ thấy phạm vi từ 0 đến 2592000 giây ( ,60chỉ định mức độ chi tiết của cài đặt, trong trường hợp này, giá trị phải chia hết cho 60 [một phút]).

    Nếu bạn thấy giá trị bắt đầu cho phép 0thì thường cho biết cài đặt có thể bị tắt.

  • Cài đặt hết thời gian chờ cho ứng dụng IIS7

    Brad Kingsley là người sáng lập và Giám đốc điều hành của OrcsWeb, một đối tác khá nổi tiếng, được kính trọng và tin cậy của Microsoft.

  • Sau đó, cũng có bằng chứng thực nghiệm về thực tế rằng nó "chỉ hoạt động".


3
một headup cho người khác - sau khi đọc nó, tôi đặt thời gian chờ nhàn rỗi của mình thành 0 trên IIS7 và nó bắt đầu hết thời gian ngay lập tức - mỗi lần tải trang mất 15 giây hoặc lâu hơn. Bây giờ tôi đã tăng nó lên 600 và mọi thứ lại nhanh chóng trở lại.
đinh vào

1
@nailitdown: Bạn có thể muốn kiểm tra lại. Tôi vừa đặt thời gian chờ nhóm ứng dụng IIS6 của mình về 0 và nó hoạt động tốt. Có một cơ hội khác nhau giữa IIS7 / IIS6, sẽ rất tốt để biết.
Doug S

3
kể từ khi tôi đăng bài rằng chúng tôi gặp nhiều vấn đề với VPS, tôi đã làm việc với ... rất có thể nó đã bị định cấu hình sai. Tôi chỉ cố gắng sao chép nó trên VPS mới và nó hoạt động đúng như mô tả.
đinh

3
@ Zero3 - tốt .... trước khi thay đổi bất kỳ cài đặt nào trên trang web có lưu lượng truy cập cao, bạn phải luôn kiểm tra tác dụng phụ, v.v. trên môi trường dàn dựng / QA của bạn. Ngoài ra, trong thời gian bạn áp dụng thay đổi cho môi trường sản xuất của mình, bạn thực sự phải đưa ra một trang bảo trì cho người dùng phải đối mặt với công chúng cho đến khi thay đổi đó có hiệu lực. Bạn cần quản lý những thay đổi này để không có bất ngờ.
Kev

2
@ Zero3 - vâng, việc thay đổi nhiều cài đặt Nhóm ứng dụng yêu cầu khởi động lại quá trình để có hiệu lực, điều này theo mặc định xảy ra ngay lập tức. Bạn có thể thay đổi điều này với DisallowRotationOnConfigChange - xem serverfault.com/questions/333907/ ám để biết thêm một chút về điều đó.
TristanK

11

Câu trả lời chính xác! cảm ơn Kev

Một bản cập nhật nhỏ: URL bạn đã đăng đã được di chuyển và hiện tại: http://bradkingsley.com/iis7-application-pool-idle-time-out-sinstall/

Tôi đã tự hỏi nếu có một lý do tại sao điều này không phải là mặc định, và nếu có thể có một tác động hiệu suất để giữ cho nhóm ứng dụng mở quá lâu. Chà, giữ nó khi không hoạt động sẽ không gây rắc rối cho bạn hơn là không tái chế nó khi có lưu lượng truy cập và không có thời gian rảnh. Nếu bạn lo lắng về rò rỉ bộ nhớ hoặc rò rỉ tài nguyên khác, có một cài đặt buộc tái chế dựa trên thời gian / số lượng yêu cầu kể từ lần tái chế / tiêu thụ bộ nhớ cuối cùng. Đây là tài liệu cho nó:

http://technet.microsoft.com/en-us/l Library / cc753179 (v = ws.10) .aspx

Tôi sẽ đặt máy chủ của mình không tái chế khi không hoạt động (idleTimeout = 0) và tái chế sau mỗi 24 giờ: Tái chế> Khoảng thời gian thường xuyên = 1440


15
Có lẽ bạn nên đặt tái chế của mình theo thời gian cố định (ví dụ: 0100) thay vì 24 giờ vì điều đó sẽ dẫn đến 24 giờ kể từ lần khởi động lại máy chủ / iis lần cuối.
Neal

1
Import-Module WebAdministration

$pools = Get-ChildItem iis:\apppools

foreach ($pool in $pools)
{ 
$poolname = $pool.Name

Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeout="20"}
Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeoutaction="Suspend"}
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart -Value @{time="0"} 
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart.schedule -Value @{value="02:00:00"} 
Set-ItemProperty IIS:\AppPools\$poolname -name Recycling -value @{logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"} 

Write-Host "Updated $poolname settings" 
}

6
Một lời giải thích về mã dán này sẽ hữu ích.
Luke Alderton
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.