Recycling Settings for an Application Pool <recycling>
2015-12-03 15:15
537 查看
Overview
The<recycling>element contains configuration settings that control the conditions that trigger IIS 7 to restart an application pool. You can also control the types of events IIS writes to the event log when the application pool recycles.
You can specify that IIS recycle an application pool at set intervals (such as every 180 minutes), at a specific time each day, or after the application pool receives a certain number of requests. You can also configure the
<recycling>element to restart the application pool when the worker process virtual memory and physical memory usage reaches a specific threshold.
You can use the
<recycling>element to specify two classes of events to log to the event log when IIS recycles an application pool. The first class contains recycling events that you can configure, such as those mentioned in the previous paragraph. The second class includes run-time recycling events, such as on-demand recycling events, recycling events triggered by configuration changes in the application or applications running in the application pool, or recycling caused by an unhealthy Internet Server Application Programming Interface (ISAPI) filter or ISAPI extension.
The
<recycling>element uses the following attribute and child element to implement these features:
logEventOnRecycle attribute
periodicRestart element
Compatibility
Version | Notes |
---|---|
IIS 8.5 | The <recycling>element was not modified in IIS 8.5. |
IIS 8.0 | The <recycling>element was not modified in IIS 8.0. |
IIS 7.5 | The <recycling>element was not modified in IIS 7.5. |
IIS 7.0 | The <recycling>element was introduced in IIS 7.0. |
IIS 6.0 | The <recycling>element replaces portions of the IIS 6.0 IIsApplicationPools metabase property. |
Setup
The<applicationPools>collection is included in the default installation of IIS 7.
How To
HOW TO SET UP PERIODIC RECYCLING FOR AN APPLICATION POOL
Open Internet Information Services (IIS) Manager:If you are using Windows Server 2012 or Windows Server 2012 R2:
On the taskbar, click Server Manager, click Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows 8 or Windows 8.1:
Hold down the Windows key, press the letter X, and then click Control Panel.
Click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
If you are using Windows Server 2008 or Windows Server 2008 R2:
On the taskbar, click Start, point to Administrative Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows Vista or Windows 7:
On the taskbar, click Start, and then click Control Panel.
Double-click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
In the Connections pane, expand the server name, and then click Application Pools.
In the Application Pools pane, select the application pool you want edit.
In the Actions pane, click Recycling...
On the Recycling Conditions page of the Edit Application Pool Recycling Settings Wizard, select at least one of the options in the Fixed Intervals section, type values into the appropriate text boxes, and then click Next.
(Optional) On the Recycling Events to Log page of the Edit Application Pool Recycling Settings Wizard, select the configurable recycling events and run-time recycling events that you want IIS to send to the event log when they occur, and then click Finish.
Note: By default, IIS sends the Regular time intervals, Virtual memory usage, and Private memory usage configurable recycling events to the event log. The other configurable recycling events are available for logging only if you have enabled the logging event on the Recycling Conditions page.
Configuration
The<recycling>element is configurable at the server level in the ApplicationHost.config file.
ATTRIBUTES
Attribute | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
disallowOverlappingRotation | Optional Boolean attribute. Specifies whether the WWW Service should start another worker process to replace the existing worker process while that process is shutting down. The value of this property should be set to true if the worker process loads any application code that does not support multiple worker processes. The default value is false. | ||||||||||||||||||
disallowRotationOnConfigChange | Optional Boolean attribute. Specifies whether the WWW Service should rotate worker processes in an application pool when the configuration has changed. The default value is false. | ||||||||||||||||||
logEventOnRecycle | Optional flags attribute. Specifies that IIS should log an event when an application pool is recycled. ThelogEventOnRecycle property must have a bit set corresponding to the reason for the recycle if IIS is to log the event. The logEventOnRecycle attribute can have one or more of the following possible values. If you specify more than one value, separate them with a comma (,). The default values are Time, Memory, and PrivateMemory.
|
CHILD ELEMENTS
Element | Description |
---|---|
periodicRestart | Optional element. Specifies conditions under which application pools are recycled. |
CONFIGURATION SAMPLE
The following configuration sample uses the application pool<add>element to create a new application pool named Contoso. The
<recycling>element configures logging for application pool restarts, the
<periodicRestart>element configures when the application pool restarts, and the
<processModel>element configures the shutdownTimeLimit and startupTimeLimitattributes for shutting down and starting the worker processes in the application pool for 30 seconds each. If these time limits are exceeded, IIS terminates the worker process.
<add name="Contoso"> <recycling logEventOnRecycle="Schedule"> <periodicRestart> <schedule> <clear /> <add value="03:00:00" /> </schedule> </periodicRestart> </recycling> <processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" /> </add>
Sample Code
The following code examples add an application pool named Contoso to your IIS 7 server, then set the application pool to daily recycle at 3:00 A.M.APPCMD.EXE
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso']" /commit:apphost appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost
You can also use the following syntax:
appcmd.exe add apppool /name:"Contoso" appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost
Note: You must be sure to set the commit parameter to
apphostwhen you use AppCmd.exe to configure these settings. This commits the configuration settings to the appropriate location section in the ApplicationHost.config file.
C#
using System; using System.Text; using Microsoft.Web.Administration; internal static class Sample { private static void Main() { using (ServerManager serverManager = new ServerManager()) { Configuration config = serverManager.GetApplicationHostConfiguration(); ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools"); ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection(); ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add"); addElement["name"] = @"Contoso"; ConfigurationElement recyclingElement = addElement.GetChildElement("recycling"); ConfigurationElement periodicRestartElement = recyclingElement.GetChildElement("periodicRestart"); ConfigurationElementCollection scheduleCollection = periodicRestartElement.GetCollection("schedule"); ConfigurationElement addElement1 = scheduleCollection.CreateElement("add"); addElement1["value"] = TimeSpan.Parse("03:00:00"); scheduleCollection.Add(addElement1); applicationPoolsCollection.Add(addElement); serverManager.CommitChanges(); } } }
VB.NET
Imports System Imports System.Text Imports Microsoft.Web.Administration Module Sample Sub Main() Dim serverManager As ServerManager = New ServerManager Dim config As Configuration = serverManager.GetApplicationHostConfiguration Dim applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools") Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection Dim addElement As ConfigurationElement = applicationPoolsCollection.CreateElement("add") addElement("name") = "Contoso" Dim recyclingElement As ConfigurationElement = addElement.GetChildElement("recycling") Dim periodicRestartElement As ConfigurationElement = recyclingElement.GetChildElement("periodicRestart") Dim scheduleCollection As ConfigurationElementCollection = periodicRestartElement.GetCollection("schedule") Dim addElement1 As ConfigurationElement = scheduleCollection.CreateElement("add") addElement1("value") = TimeSpan.Parse("03:00:00") scheduleCollection.Add(addElement1) applicationPoolsCollection.Add(addElement) serverManager.CommitChanges() End Sub End Module
JAVASCRIPT
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager'); adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"; var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST"); var applicationPoolsCollection = applicationPoolsSection.Collection; var addElement = applicationPoolsCollection.CreateNewElement("add"); addElement.Properties.Item("name").Value = "Contoso"; var recyclingElement = addElement.ChildElements.Item("recycling"); var periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart"); var scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection; var addElement1 = scheduleCollection.CreateNewElement("add"); addElement1.Properties.Item("value").Value = "03:00:00"; scheduleCollection.AddElement(addElement1); applicationPoolsCollection.AddElement(addElement); adminManager.CommitChanges();
VBSCRIPT
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager") adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST" Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST") Set applicationPoolsCollection = applicationPoolsSection.Collection Set addElement = applicationPoolsCollection.CreateNewElement("add") addElement.Properties.Item("name").Value = "Contoso" Set recyclingElement = addElement.ChildElements.Item("recycling") Set periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart") Set scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection Set addElement1 = scheduleCollection.CreateNewElement("add") addElement1.Properties.Item("value").Value = "03:00:00" scheduleCollection.AddElement(addElement1) applicationPoolsCollection.AddElement(addElement) adminManager.CommitChanges()
相关文章推荐
- Webview 打开qq聊天窗口,申请进群
- iOS--界面传值 通知模式(广播)
- Android学习笔记——TextView+跑马灯
- 获取Listview滑动距离
- android Studio Error: 前言中不允许有内容
- Android应用安全现状与解决方案
- android 六大开源框架
- Android编程中的5种数据存储方式
- Android通过RandomAccessFile 向文件中写入数据
- 【iOS】字号问题
- 【iOS】字号问题
- 在xcode6.1和ios10.10.1环境下实现app发布
- 【转载】Android样式的开发:drawable汇总篇
- android View 事件分发
- Java2下实现applet数字签名和认证
- Unity嵌入Android后Android视图获取不到事件焦点
- Android设置Settings实现:PreferenceActivity(1)
- android Conversion to Dalvik format failed with error 1的错误的解决
- unity3d 发布后动态修改地形高度源码
- Android中的的字体设置和粗体设置