Azure webroles在配置更改后回收,尽管处理了RoleEnvironment。更改事件并将Cancel设置为false

Azure webroles在配置更改后回收,尽管处理了RoleEnvironment。更改事件并将Cancel设置为false,azure,azure-web-roles,Azure,Azure Web Roles,更改webrole的某些配置设置时,会触发RoleEnvironment.Changeing事件。据我所知,如果RoleEnvironment ChangingEventArgs中的Cancel设置为false,则角色不应回收,更改刚刚被接受,并应在RoleEnvironment.Changed事件触发后立即应用 然而,尽管将“取消”设置为false,我们的角色仍在循环使用 这是事件处理程序的内容: public static void onRoleEnvironmentChanging(obj

更改webrole的某些配置设置时,会触发RoleEnvironment.Changeing事件。据我所知,如果RoleEnvironment ChangingEventArgs中的Cancel设置为false,则角色不应回收,更改刚刚被接受,并应在RoleEnvironment.Changed事件触发后立即应用

然而,尽管将“取消”设置为false,我们的角色仍在循环使用

这是事件处理程序的内容:

public static void onRoleEnvironmentChanging(object sender, 
RoleEnvironmentChangingEventArgs e)
{
    try
    {
        List<RoleEnvironmentConfigurationSettingChange> configurationChanges = e.Changes.OfType<RoleEnvironmentConfigurationSettingChange>().ToList();
        e.Cancel = configurationChanges.Any(c => (c.ConfigurationSettingName == "settingThatShouldRecycleRole")))
    }
    catch (Exception)
    {
        e.Cancel = false;
    }
}
即使我没有对更改的设置执行任何操作,它也会执行此操作:

RoleEnvironment.Changing += onRoleEnvironmentChanging;
RoleEnvironment.Changed += onRoleEnvironmentChanged;

public static void onRoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
{
  e.Cancel = false;
}

private static void onRoleEnvironmentChanged(object sender, RoleEnvironmentChangedEventArgs e)
{
}
Edit2:fixed

禁用应用程序洞察修复了该问题

有关删除应用程序洞察,请参见此问题: )

此外,我禁用了向Application Insights发送诊断数据: 看


最后,在角色上启用了Windows Azure诊断扩展,该角色还将诊断上载到Application Insights。必须通过门户删除此扩展。

在VM上运行的任何挂接到服务运行时的进程都可能触发回收。检查WaHostBootstrapper日志以查看导致回收的进程。您可以从介绍WaHostBootstrapper开始,并特别关注这些内容。

谢谢。我一直在看那些日志,但我很难理解它们(见我更新的帖子)。如果您能看一看,我们将不胜感激。有关回收利用,请查看一个较旧的WaHostBootstrapper日志(即WaHostBootstrapper.log.001)。WaHostBootstrapper.log只是Azure尝试运行应用程序的当前迭代,因此它不会显示以前发生的循环。每次角色实例回收活动WaHostBootstrapper.log时,都会将其归档到.001、.002等文件中。您可以在此处共享日志,也可以通过门户打开支持事件,支持团队可以直接与您合作解决此问题。也许我误解了回收的含义,但是从上面发布的WaHostBootstrapper.log文件中可以明显看出这个问题。“删除断开连接的客户端:w3wp.exe(3424)。”这句话就是我要说的。据我所知,该进程是角色代码的容器,它会不必要地重新启动。这不是角色回收。角色回收是指角色主机进程(WaWorkerHost或WaIISHost)关闭,然后Azure(Azure来宾代理)再次完成整个初始化过程。您所看到的只是w3wp.exe关闭,这可能是由于多种原因造成的,但不是该实例的完全回收和重新初始化。您是否正在使用应用程序洞察?目前,AI行为是在配置更改时重新安装,这会导致w3wp回收。我们正在研究一个长期的解决方案,但现在你可以禁用人工智能,如果需要的话。
12:27:30.313, INFO ] The role can handle the config change without recycle.     
12:27:30.355, INFO ] Firewall configuration was not found for X.X.X.X. Creating new configuration for X.X.X.X
12:27:30.355, INFO ] Firewall configuration was not found for Y.Y.Y.Y. Creating new configuration for Y.Y.Y.Y
12:27:30.355, INFO ] Creating additional rule for Internal Endpoint.
12:27:30.355, INFO ] Creating additional rule for Internal Endpoint.
12:27:30.355, INFO ] Creating additional rule for Internal Endpoint.
12:27:30.355, INFO ] Setting firewall rule : -REDACTED-
12:27:30.355, INFO ] Firewall rule -REDACTED-
-Repeated 10+ times with different rule guids-
12:27:30.560, INFO ] Cleanup base filters for group NT SERVICE:
12:27:30.560, WARN ] BaseFilterRemoveStealthModeFilters not implemented     
12:27:30.560, INFO ] Add stealth-mode filters if requested for group NT SERVICE:
12:27:30.560, INFO ] Deleting firewall rules...     
12:27:31.011, INFO ] Deleted 14 rules. hr: 0x0      
12:27:31.011, WARN ] BaseFilterRemoveStealthModeFilters not implemented     
12:27:31.011, INFO ] Deleting URLACL : Url = http://X.X.X.X:XXX/        
12:27:31.011, WARN ] Warning: Unable to delete URLACL : URL = http://X.X.X.X:XXX/. Error code - 0x2
12:27:31.011, INFO ] Deleting URLACL : Url = https://X.X.X.X:XXX/
12:27:31.011, INFO ] Successfully created URLACL : URL = https://X.X.X.X:XXX/, SDDL = D:(A;;GX;;;S-1-5-20).
12:27:31.011, INFO ] AgentpUpdateConfigWorker Returning
    00000000.
12:27:31.011, INFO ] <<<<_Context_Ends: {-REDACTED-}    Return value = 00000000. 
12:27:31.011, WARN ] <- AgentMonitoringObject::EventEnd(0x00007FFF616577E0) =0x80070015
12:27:31.011, INFO ] <<<<_Context_Ends: {-REDACTED-}    Return value = 00000000. 
12:27:23.86] [HEART] WindowsAzureGuestAgent Heartbeat.
12:27:23.86] [INFO]  Role current state: Started.
12:27:23.86] [INFO]  Recieved goal state information.
12:27:23.86] [INFO]  Execution status: UpdateSucceeded.
12:27:23.86] [INFO]  Role -REDACTED- is reporting state Ready.
12:27:24.32] [INFO]  Role -REDACTED- has current state Started, desired state Started, and goal state execution status UpdateSucceeded.
12:27:28.87] [HEART] WindowsAzureGuestAgent Heartbeat.
12:27:28.87] [INFO]  Role current state: Started.
12:27:28.87] [INFO]  Recieved goal state information.
12:27:28.87] [INFO]  Execution status: UpdateSucceeded.
12:27:28.87] [INFO]  Role -REDACTED- is reporting state Ready.
12:27:28.87] [INFO]  Goal state 43 received.
12:27:28.87] [INFO]  Received stop role deadline hint: 300000. ExpectedState: Started
12:27:28.87] [INFO]  Goal state being updated.
12:27:28.87] [INFO]  Deleting all user accounts.
12:27:28.87] [INFO]  Role -REDACTED- is being updated.
12:27:28.87] [INFO]  Role -REDACTED- has goal state Started.
12:27:28.87] [INFO]  Extension Plugins Found.
12:27:28.95] [INFO]  Goal state execution started for role -REDACTED-.
12:27:28.95] [INFO]  Driving role -REDACTED- to goal state Started from current state Started.
12:27:29.98] [INFO]  Found role root. roleId:  tagFileName:  tagPatternUsed: *.tag root: E:\
12:27:29.98] [INFO]  Acled the directory E:\base.
12:27:29.98] [INFO]  Acled the directory E:\base\x64.
12:27:29.98] [INFO]  Acled the directory E:\base\x86.
12:27:29.98] [INFO]  Acled the directory D:\Packages.
12:27:29.98] [INFO]  Acled the directory D:\Packages\GuestAgent.
12:27:29.98] [INFO]  Acled the directory D:\Packages\GuestAgent\GuestAgent.
12:27:29.98] [INFO]  Acled the directory D:\Packages\GuestAgent\GuestAgent\LegacyRuntime.
12:27:29.98] [INFO]  Acled the directory D:\Packages\GuestAgent\GuestAgent\LegacyRuntime\x64.
12:27:29.98] [INFO]  Acled the directory D:\Packages\GuestAgent\GuestAgent\LegacyRuntime\x86.
12:27:29.98] [INFO]  Acled the directory D:\Packages\GuestAgent\Telemetry.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Monitor.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Monitor\x64.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Monitor\x64\Extensions.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Monitor\x64\Extensions\ApplicationInsightsExtension.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Monitor\x64\Extensions\ApplicationInsightsExtension\Resources.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Monitor\x64\schema.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Monitor\x64\schema\1.0.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Monitor\x64\schema\2.0.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\RuntimeSettings.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\schema.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Status.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\StatusMonitor.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Windows.Azure.Extensions.RDP.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Windows.Azure.Extensions.RDP\1.2.1.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Windows.Azure.Extensions.RDP\1.2.1\RuntimeSettings.
12:27:29.98] [INFO]  Acled the directory D:\Packages\Plugins\Microsoft.Windows.Azure.Extensions.RDP\1.2.1\Status.
12:27:30.08] [INFO]  Found role root. roleId: -REDACTED-
12:27:30.08] [INFO]  Sending new config file: -REDACTED-.
12:27:30.08] [INFO]  Starting installation of plugins. Incarnation: 43 Plugin size: 2
12:27:30.08] [INFO]  Downloading version manifest for plugin Microsoft.Azure.Diagnostics.PaaSDiagnostics from -REDACTED-
12:27:30.13] [INFO]  Getting plugin locations for plugin 'Microsoft.Azure.Diagnostics.PaaSDiagnostics'. Current Version: '1.8.1.0', Requested Version: '1.8.1.0'
12:27:30.13] [INFO]  Auto-Upgrade mode. Highest public version for plugin 'Microsoft.Azure.Diagnostics.PaaSDiagnostics' with requested version: '1.8.1.0', is: '1.8.1.0'
12:27:30.13] [INFO]  Updating plugin 'Microsoft.Azure.Diagnostics.PaaSDiagnostics' to version '1.8.1.0'
12:27:30.14] [INFO]  No plugin settings received. Setting nothing for plugin: Microsoft.Azure.Diagnostics.PaaSDiagnostics version: 1.8.1.0
12:27:30.14] [INFO]  Downloading version manifest for plugin Microsoft.Windows.Azure.Extensions.RDP from -REDACTED-
12:27:30.15] [INFO]  Getting plugin locations for plugin 'Microsoft.Windows.Azure.Extensions.RDP'. Current Version: '1.2.1', Requested Version: '1.2.1'
12:27:30.15] [INFO]  Auto-Upgrade mode. Highest public version for plugin 'Microsoft.Windows.Azure.Extensions.RDP' with requested version: '1.2.1', is: '1.2.1'
12:27:30.15] [INFO]  Updating plugin 'Microsoft.Windows.Azure.Extensions.RDP' to version '1.2.1'
12:27:30.15] [INFO]  No plugin settings received. Setting nothing for plugin: Microsoft.Windows.Azure.Extensions.RDP version: 1.2.1
12:27:30.15] [INFO]  Processing plugin Microsoft.Windows.Azure.Extensions.RDP version 1.2.1, state: enabled, autoupgrade: True, isJson: False
12:27:30.15] [INFO]  Plug-in Microsoft.Windows.Azure.Extensions.RDP 1.2.1 found in cache.
12:27:30.15] [INFO]  Extracting plug-in zip file to folder. Zip file: D:\Packages\Plugins\Microsoft.Windows.Azure.Extensions.RDP\1.2.1\Microsoft.Windows.Azure.Extensions.RDP_1.2.1.zip
12:27:30.16] [INFO]  Xml manifest file D:\Packages\Plugins\Microsoft.Windows.Azure.Extensions.RDP\1.2.1\PluginManifest.xml found corresponding to the plugin Microsoft.Windows.Azure.Extensions.RDP
12:27:30.16] [INFO]  Install command of plugin Microsoft.Windows.Azure.Extensions.RDP: D:\Packages\Plugins\Microsoft.Windows.Azure.Extensions.RDP\1.2.1\RemoteAccessPluginLauncher.exe
12:27:30.16] [INFO]  Beginning installation of plugin Microsoft.Windows.Azure.Extensions.RDP 1.2.1.
12:27:30.16] [INFO]  Processing plugin Microsoft.Azure.Diagnostics.PaaSDiagnostics version 1.8.1.0, state: enabled, autoupgrade: True, isJson: False
12:27:30.16] [INFO]  Plug-in Microsoft.Azure.Diagnostics.PaaSDiagnostics 1.8.1.0 found in cache.
12:27:30.16] [INFO]  Extracting plug-in zip file to folder. Zip file: D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Microsoft.Azure.Diagnostics.PaaSDiagnostics_1.8.1.0.zip
12:27:30.21] [WARN]  Package extraction failed. D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\Microsoft.Azure.Diagnostics.PaaSDiagnostics_1.8.1.0.zip D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0 HR = '0x8007026A' from PackageExpand, Code: 1005
12:27:30.21] [INFO]  Xml manifest file D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\PluginManifest.xml found corresponding to the plugin Microsoft.Azure.Diagnostics.PaaSDiagnostics
12:27:30.21] [INFO]  Install command of plugin Microsoft.Azure.Diagnostics.PaaSDiagnostics: D:\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.8.1.0\diagnosticspluginlauncher.exe
12:27:30.21] [INFO]  Beginning installation of plugin Microsoft.Azure.Diagnostics.PaaSDiagnostics 1.8.1.0.
12:27:30.26] [INFO]  Found role root. roleId: {-REDACTED-} tagFileName: -REDACTED-.cssx tagPatternUsed: -REDACTED-.cssx.tag root: E:\
12:27:30.26] [WARN]  Environment variable RoleRoot already exists with old value: E:\. Replacing it with new value: E:\
12:27:30.26] [INFO]  Waiting for command of plugin Microsoft.Windows.Azure.Extensions.RDP to finish...
12:27:30.40] [INFO]  Found role root. roleId: {-REDACTED-} tagFileName: -REDACTED-.cssx tagPatternUsed: -REDACTED-.cssx.tag root: E:\
12:27:30.40] [WARN]  Environment variable RoleRoot already exists with old value: E:\. Replacing it with new value: E:\
12:27:30.40] [INFO]  Waiting for command of plugin Microsoft.Azure.Diagnostics.PaaSDiagnostics to finish...
12:27:31.01] [INFO]  Role -REDACTED- was updated.
12:27:31.01] [INFO]  1 events queued for role -REDACTED-.
12:27:33.56] [INFO]  Successfully installed plugin Microsoft.Windows.Azure.Extensions.RDP 1.2.1.
12:27:33.56] [INFO]  Plugin enabled (name: Microsoft.Windows.Azure.Extensions.RDP, version: 1.2.1)., Code: 0
12:27:35.00] [HEART] WindowsAzureGuestAgent Heartbeat.
12:27:35.00] [INFO]  Role current state: Started.
12:27:35.00] [INFO]  Recieved goal state information.
12:27:35.00] [INFO]  Execution status: UpdateSucceeded.
12:27:35.00] [INFO]  Role -REDACTED- is reporting queued event [NotReady, Starting, Role was updated successfully. @05/26/2017 12:27:31.01].
12:27:35.00] [INFO]  Generating substatus from system events.
12:27:35.00] [INFO]  Substatus is Role was updated successfully. System is initializing. [2017-05-26T12:27:28Z]
12:27:35.00] [INFO]  Role -REDACTED- is reporting state NotReady with sub-status Starting and details Role was updated successfully. System is initializing. [2017-05-26T12:27:28Z].
12:27:36.02] [INFO]  Role -REDACTED- has current state Started, desired state Started, and goal state execution status UpdateSucceeded.
12:27:40.03] [HEART] WindowsAzureGuestAgent Heartbeat.
12:27:40.03] [INFO]  Role current state: Started.
12:27:40.03] [INFO]  Recieved goal state information.
12:27:40.03] [INFO]  Execution status: UpdateSucceeded.
12:27:40.03] [INFO]  Role -REDACTED- is reporting state Ready.
12:27:41.03] [INFO]  Role -REDACTED- has current state Started, desired state Started, and goal state execution status UpdateSucceeded.
12:27:45.05] [HEART] WindowsAzureGuestAgent Heartbeat.
12:27:45.05] [INFO]  Role current state: Started.
12:27:45.05] [INFO]  Recieved goal state information.
12:27:45.05] [INFO]  Execution status: UpdateSucceeded.
12:27:45.05] [INFO]  Role -REDACTED- is reporting state Ready.
12:27:46.07] [INFO]  Role -REDACTED- has current state Started, desired state Started, and goal state execution status UpdateSucceeded.
RoleEnvironment.Changing += onRoleEnvironmentChanging;
RoleEnvironment.Changed += onRoleEnvironmentChanged;

public static void onRoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
{
  e.Cancel = false;
}

private static void onRoleEnvironmentChanged(object sender, RoleEnvironmentChangedEventArgs e)
{
}