2017-05-25 3 views
2

Lors de la modification de certains paramètres de configuration d'un webrole, l'événement RoleEnvironment.Changing est déclenché. Si je comprends bien, si Cancel est défini sur false dans RoleEnvironmentChangingEventArgs, le rôle ne doit pas être recyclé et les modifications sont simplement acceptées et doivent être appliquées dès que l'événement RoleEnvironment.Changed se déclenche. Toutefois, nos rôles sont en recyclage malgré la définition de Annuler à false.Azure webroles recycler après modification de la configuration malgré la gestion de l'événement RoleEnvironment.Changing et du paramètre Cancel to false

Ceci est le contenu du gestionnaire d'événements:

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; 
    } 
} 

J'ai ajouté les prises d'essai ici juste pour être sûr, mais il n'a jamais été déclenché pour autant que je suis en mesure de dire.

Le paramètre déclenchant e.Cancel = true n'a pas été modifié. J'ai consigné le résultat final de ce gestionnaire d'événements et le rôle recycle même si e.Cancel a la valeur false.

L'examen des journaux des rôles n'a malheureusement pas fourni de raison pour le recyclage.

Selon ce vieux choses post blog peut se tromper si l'événement ne répond pas dans un fassion en temps opportun: https://alexandrebrisebois.wordpress.com/2013/09/29/handling-cloud-service-role-configuration-changes-in-windows-azure/

Cependant, je ne peux pas imaginer que ce code prend beaucoup de temps à exécuter. La mesure a donné environ 150 ms, ce qui est plutôt lent, mais cela inclut le code qui consigne les horaires dans le stockage de la table. L'affirmation selon laquelle la gestion de l'événement est sensible au temps n'est également documentée nulle part ailleurs autant que j'ai pu le trouver.

Edit: contenu pertinent de WaHostBootstrapper.log

12:27:26.254, INFO ] Getting status from client WaIISHost.exe (2728). 
12:27:26.254, INFO ] Client reported status 0. 
12:27:26.254, INFO ] Getting status from client w3wp.exe (3424). 
12:27:26.254, INFO ] Client reported status 0. 
12:27:30.183, INFO ] Sending update notification to client WaIISHost.exe (2728). 
12:27:30.183, INFO ] Sending update notification to client w3wp.exe (3424). 
12:27:30.261, INFO ] Sending update completion notification to client WaIISHost.exe (2728). 
12:27:30.293, INFO ] Sending update completion notification to client w3wp.exe (3424). 
12:27:41.271, INFO ] Getting status from client WaIISHost.exe (2728). 
12:27:41.271, INFO ] Client reported status 0. 
12:27:41.271, INFO ] Getting status from client w3wp.exe (3424). 
12:27:41.271, ERROR] Failed to connect to client w3wp.exe (3424). 
12:27:41.271, ERROR] <- CRuntimeClient::OnRoleStatusCallback(0x000000A1B6E0E3C0) =0x800706ba 
12:27:41.271, INFO ] Removing disconnected client: w3wp.exe (3424). 
12:27:56.279, INFO ] Getting status from client WaIISHost.exe (2728). 
12:27:56.279, INFO ] Client reported status 0. 
12:28:11.284, INFO ] Getting status from client WaIISHost.exe (2728). 
12:28:11.284, INFO ] Client reported status 0. 
12:28:26.296, INFO ] Getting status from client WaIISHost.exe (2728). 
12:28:26.296, INFO ] Client reported status 0. 
12:28:35.683, INFO ] Registering client with PID 2964. 
12:28:35.683, INFO ] Client w3wp.exe (2964) registered. 
12:28:41.464, INFO ] Getting status from client WaIISHost.exe (2728). 
12:28:41.464, INFO ] Client reported status 0. 
12:28:41.464, INFO ] Getting status from client w3wp.exe (2964). 
12:28:41.480, INFO ] Client reported status 0. 
12:28:56.499, INFO ] Getting status from client 

contenu pertinent de AppAgentRuntime.log (un peu expurgée)

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. 

Cela semble suspect pour moi, pourquoi est-il une mise à jour tas de règles de pare-feu?

Contenu de WaAppAgent.log:

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. 

Elle le fait même quand je ne fais rien avec les paramètres modifiés:

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

Désactivation Les informations sur l'application ont résolu le problème.

Voir cette question pour la suppression des idées d'application: Remove Application Insight from application on Visual Studio 2013)

En outre, je désactivé l'envoi de données de diagnostic Aperçus Application: Voir disable send diagnostics data to application insights on publish settings

Enfin il y avait une extension de diagnostic Windows Azure est activée sur le rôle qui a également téléchargé des diagnostics sur Application Insights. Cette extension a dû être supprimée via le portail.

Répondre

0

Tout processus exécuté sur la machine virtuelle qui se connecte à l'exécution du service peut déclencher un recyclage. Vérifiez les journaux WaHostBootstrapper pour voir quel processus provoque le recyclage. Vous pouvez commencer par https://blogs.msdn.microsoft.com/kwill/2013/08/09/windows-azure-paas-compute-diagnostics-data/ et vous concentrer sur ceux qui parlent de WaHostBootstrapper.

+1

Merci. J'ai regardé ces journaux mais j'ai du mal à leur donner un sens (voir mon article mis à jour). Ce serait grandement apprécié si vous pouviez les regarder. – Sinar

+0

Pour le recyclage, regardez l'un des anciens journaux WaHostBootstrapper (par exemple WaHostBootstrapper.log.001). Le fichier WaHostBootstrapper.log correspond simplement à l'itération en cours de la tentative par Azure pour exécuter votre application afin de ne pas afficher le recyclage effectué précédemment. Chaque fois qu'une instance de rôle recycle l'actif WaHostBootstrapper.log est archivé dans un fichier .001, .002, etc. – kwill

+0

Vous pouvez partager vos journaux ici, ou n'hésitez pas à ouvrir un incident de support via le portail et l'équipe de support peut travailler directement avec vous sur ce problème. – kwill