2013-03-31 16 views
22

A volte quando accedo al sito Web di Windows Azure, il tempo di risposta iniziale è molto lento. Dopo aver caricato la prima pagina, il sito web è veloce. Qualche background: il sito web non è così spesso visitato al momento. Inoltre, sto utilizzando un keepalivecontroller per mantenere il sito Web in esecuzione e il sito Web è in esecuzione in modalità condivisa. Mi chiedo: i siti web che non sono così attivi sono stati rimossi dalla memoria in Windows Azure? O è solo che le attività in background a livello operativo di Windows Azure interferiscono a volte? Non è trasparente per me cosa sta succedendo, quindi c'è qualche cosa di qualcosa per i siti Web di Windows Azure?windows azure tempo di caricamento del sito

risposta

2

I siti Web di Windows Azure sono ancora in anteprima, quindi non esiste attualmente alcun SLA con quel servizio.

I siti Web sono inattivi quando in modalità gratuita o in modalità condivisa, che è probabilmente quello che stai vedendo. Quando il sito è inattivo, viene rimosso dalla memoria e l'host del processo IIS che esegue il sito viene arrestato. Ecco come possono ottenere la densità di hosting di 100 siti sulla stessa VM.

Puoi trovare molte informazioni sul sito Channel9 sul perché questo è il caso, o, come una spina spudorata, ecco un articolo che parla di how the process is handled.

Ora, hai detto che stavi usando un keepalivecontroller, ma cosa intendi esattamente con questo? Io uso pingdom.com per richiedere continuamente dati per uno dei miei siti web, e questo sembra funzionare piuttosto bene. È ancora possibile che una richiesta non arrivi e che il tempo di inattività sia rispettato, quindi esegue il ciclo del sito. È anche possibile che, anche se il sito è sempre in esecuzione in modo che la VM sui siti del sito su abbia bisogno dell'aggiornamento del sistema operativo sottostante, in tal caso Azure sposta quindi il processo del sito su un'altra VM, il che potrebbe causare anche l'avvio lento alla prossima richiesta.

Vorrei avviare la registrazione delle applicazioni avviate e quindi esaminare i registri per vedere quanto spesso ciò accade.

+0

Ho un'attività in esecuzione su un thread separato e che richiede solo la home page con l'aiuto della classe WebClient. Spesso, sembra funzionare bene, quindi penso anche che forse è una cosa di manutenzione del sistema operativo. Trovo solo un po 'inquietante il fatto che non sia trasparente ciò che sta accadendo sulla macchina in esecuzione sul sito. Ma suppongo che tu lo abbia sempre con una macchina condivisa. Controllerò davvero i log. Ottimo articolo, a proposito! – staccata

+0

Non credo che il lavoro della CPU di un sito sia considerato per mantenere il sito attivo, ma più attorno alle richieste per quel sito, ed è per questo che qualcosa come pingdom.com funziona poiché provoca la richiesta di un sito al di fuori del sito stesso . Altri hanno fatto cose con lo Scheduler di Windows Azure Mobile Services. – MikeWo

13

Il modo più semplice per mantenere caldo un sito Web è chiamarlo regolarmente utilizzando la funzione Pianificatore in Servizi mobili di Windows Azure.

È sufficiente scrivere uno script nell'utilità di pianificazione che esegue il ping del sito Web ogni x minuti.

Ecco un post che copre come fare: http://fabriccontroller.net/blog/posts/job-scheduling-in-windows-azure/

17

V'è ora una nuova funzionalità disponibili per i siti web di Windows Azure in modalità 'Riservato' che manterrà il vostro caldo sito web. È ora possibile attivare "Always-on" nella scheda "Configurazione" sul sito Web di Azure. Come spiegato in this post del blog:

Quando il nuovo “Always On” funzione è è attivata su un sito, “Windows Azure sarà ping automaticamente il vostro sito web regolarmente per garantire che il sito è sempre attivo e in un warm/running state, "scrive Guthrie . “Questo è utile per garantire che un sito è sempre reattivo (e che il dominio applicazione o processo di lavoro non si è paging fuori a causa di mancanza di richieste HTTP esterni).”

+0

Perché mai questo dovrebbe essere spento? – epalm

+1

Sembra che funzioni solo in modalità Base o Standard, non in modalità Condivisa (l'OP esegue il proprio sito Web in modalità Condivisa) (http://azure.microsoft.com/en-us/documentation/articles/web-sites-configure /) – romanoza

+9

Non funziona molto bene comunque. L'ho sempre abilitato su siti Web azzurrati e di solito impiegheranno circa 30 secondi per avviare un'applicazione se nessuno l'ha acceduta di recente – eoleary

1

Se avete solo bisogno di riscaldarlo una volta (anziché mantenere caldo) e si sta tentando principalmente di impedire ai clienti di provare l'avvio a freddo della pagina, credo che lo strumento corretto sia IIS Application Initialization. Puoi configurarlo con un elenco di URL da colpire prima che ritenga l'app pronta per l'azione.

Il mio sito soffre di partenze a freddo di pagina e viene gravemente ingrandito nei siti Web di Azure (anche su un S3), ma è assolutamente veloce dopo la sua prima pubblicazione grazie a diversi livelli di memorizzazione nella cache (il nostro uso inefficiente di Umbraco il linguaggio di query dei nodi dinamici crea un sacco di zangole nel database, che stiamo ripulendo in modo opportunistico).

Da quello che ho letto e dai miei tentativi di web.config questo non è ancora disponibile nei siti Web di Azure. Ho chiesto a Microsoft di farlo qui: MS IDEA: Application Initialization to warm up specific pages when app pool starts. Per favore considera di votare per questo.

1

Per ciascun servizio/sito è necessario andare su "Configura", quindi commutare "Sempre attivo" su ON. Assicurati inoltre di fare clic su Salva; ha preso il mio sito web circa 2 minuti prima di notare il cambiamento.

Perché questo non è l'impostazione predefinita è un po 'sconvolgente, perché la mia configurazione su HostGator era in esecuzione molto più veloce di Azure. Suppongo che Microsoft stia pensando che nessuno stia accedendo al tuo sito, va bene se ha un lungo tempo di caricamento.

Problemi correlati