2012-05-19 18 views
5

Ho un ruolo di lavoro in cui un numero di thread viene eseguito per gestire le connessioni dai client. Durante il test del carico, abbiamo notato che il ruolo non risponde e rimane in tale stato fino a quando non lo riavviamo. Guardandolo nel debugger di Visual Studio (mettendo in pausa il processo attivo), possiamo vedere un numero di thread in attesa ma quando non è pronto, non si verifica alcuna attività. Come faccio a sapere che cosa sta causando la permanenza del ruolo in quello stato?Il ruolo di Windows Azure non risponde

risposta

6

AS ha accennato al fatto che il problema ha iniziato a verificarsi con il ruolo di lavoratore quando si esegue il test di carico, è possibile presumere che il ruolo funzionasse correttamente inizialmente. Ciò porta alla conclusione che il problema è specifico dell'applicazione piuttosto che qualcosa di specifico della piattaforma. Ci sono due modi per ottenere alcune informazioni di diagnostica da Windows Azure VM:

  • Opzione 1 (preferito): Al fine di controllare ciò che sta accadendo nella vostra Azure VM, si ha realmente bisogno di aggiungere Windows Azure diagnostica con il tuo ruolo in modo da poter ottenere contatore delle prestazioni, dettagli della memoria, integrità del processo dei ruoli e altri dati trasferiti da Azure VM all'archivio di Azure che puoi analizzare offline.

  • Opzione 2: abilitare l'accesso RDP alla VM di Azure e quindi accedere alla VM di Azure e installare, Perfmon, Process Explorer e altri strumenti di monitoraggio della protezione nella VM di Azure e monitorare ciò che accade.

  • Opzione 3 (Last Resort): RDP al vostro Azure VM ed installare WinDBG ed eseguire il debug del processo host

In tale condizione quando si ha un ruolo di lavoro ha smesso di funzionare, questo è quello che davvero suggerire a nessuno:

  1. cercare CPU, pressione di memoria, elenco di thread e scoprire quali thread sono bloccati e quale potrebbe essere la ragione.
  2. Verificare l'integrità del processo host worker, quando è iniziato l'ultima volta, viene riciclato per qualche motivo, per quanto tempo è in esecuzione nella VM di Azure
  3. Se si dispone di un processo separato impostato come "ProgramEntryPoint" in il tuo ruolo di lavoratore, controlla la sua salute
  4. Controlla il registro degli eventi a livello di applicazione per qualsiasi indizio. Nel ruolo di lavoratore non vedo che ci sarà qualcosa nel registro degli eventi dell'applicazione, ma vale la pena dare un'occhiata.
  5. Uso Process Monitor per monitorare alcuni processi e raccogliere il registro per vedere quando il processo muore quale era l'ultimo stato, a cosa stava accedendo ed era affamato da altri problemi.

La linea di fondo è che è davvero necessario scavare la causa principale in Azure VM praticamente come in una macchina locale.

+0

Grazie per questo, davvero buoni consigli. Inizialmente, questo problema si presentava solo sul ruolo di lavoro in Azure, ma con alcuni aggiustamenti della nostra bardatura test, abbiamo iniziato a vederlo in fase di sviluppo. Abbiamo: * Configurazione diagnostica accesso remoto/Azure * Contatori Perf e registri eventi personalizzati impostati per rapporti specifici delle app Ci sono un certo numero di posti in cui vengono eseguite operazioni asincrone. Immaginiamo che si verifichi un'eccezione non gestita, ma è difficile da trovare. – Irwin

+0

Posso chiedere quale Azure SDK si sta utilizzando? Ci sono stati alcuni problemi con Remote Forwarder nel vecchio SDK che potrebbe causare problemi casuali in Azure, ma SDK 1.6 è molto solido su quello.Cosa succede se si rimuove l'accesso RDP e Azure Diagnostics con la propria app, il problema persiste? – AvkashChauhan