2015-07-31 10 views
20

Ho uno schieramento piuttosto alto carico su Azure: 4 istanze di grandi dimensioni che servono circa 300-600 richieste al secondo. In condizioni normali: "Tempo di risposta medio" è 70 a 150ms, ma a volte può crescere fino a 200-300ms, ma è assolutamente OK.quello che potrebbe essere la ragione di tale tipo di sito web Azure si blocca?

Anche se, una o due volte al giorno (non a "ore di punta") che vedo come immagine della scheda di monitoraggio Sito Web:

Azure Web Site Monitoring

Così, il numero di richieste al minuto scende in modo significativo, il tempo medio di risposta cresce a 3 minuti e dopo un po 'tutto torna alla normalità.

Durante questo "blackout" vengono eliminate solo le richieste dello 0,1% (errori del server HTTP con timeout), altre richieste sono in attesa in coda e vengono normalmente elaborate dopo pochi minuti. Anche se, non tutti i clienti sono pronti ad aspettare :-(

utilizzo della memoria è inferiore al 30% per tutto il tempo, l'utilizzo della CPU è solo fino al 40-50%.

Quello che ho già controllato ?:

  1. Tracce per le richieste scaduta a: hanno fatto a tempo fuori a posizioni casuali
  2. throttling per Azure e altri componenti utilizzati:. nessuna limitazione a tutti
  3. ho anche cercato di instradare tutto il traffico attraverso. CloudF lare: e ho visto gli stessi problemi.

Quale potrebbe essere il motivo di tali problemi? Cosa posso controllare dopo?
Grazie a tutti in anticipo!

Update 1: BenV proposto buona cosa da provare, ma purtroppo ha mostrato nulla :-(
ho configurato processi di riciclaggio ogni 500k richieste e nodi lavoratori anche aggiunto, quindi l'utilizzo della CPU è ora inferiore al 40% per tutto il giorno lunghi, ma blackout appaiono ancora

Update 2:.. Project utilizza ASP.Net MVC 4.

+0

Ho avuto un problema simile con un'applicazione veramente piccola. Ho provato un sacco di cose e la soluzione era quella di eliminare i gestori all'inizio e aggiungerli manualmente. Forse ti aiuta anche tu. – user2721793

risposta

5

C'è qualche bella strumenti disponibili per applicazioni Web nel preview portal

Azure Web Apps tools menu

L'estensione Application Insights può essere particolarmente utile per monitoring and troubleshooting app performance.

enter image description here

+0

Grazie, BenV, ma Application Insights hanno un limite di 30.000 metriche raccolte ogni 5 minuti che causano l'interruzione della raccolta dei dati fino a mezzanotte (come ho capito), quindi è uno strumento inutilizzabile in tali carichi (ho> 30.000 richieste al minuto): - ( –

8

Ho avuto questo problema esattamente lo stesso. Per me ho visto molti errori di WinCache nei miei log.

Ogni volta che il sito fallisce, avrebbe molti errori WinCache nel registro. WinCache è il modo in cui IIS gestisce PHP per cercare di accelerare l'elaborazione. E 'un Microsoft costruito add-on che è attivata per impostazione predefinita in IIS e tutti i siti Azure. WinCache si sarebbe appeso e invece di riciclare e continuare, avrebbe consumato tutta la memoria e gli handle di file su un'istanza, essenzialmente bloccandolo.

Ho aggiunto le nuove impostazioni dell'applicazione nel portale di Azure per eseguire la scansione di una cartella per le modifiche alle impostazioni di php.ini.
d: \ home \ sito \ ini

Aggiunto un file in d: \ home \ sito \ ini \ settings.ini che contiene il seguente

wincache.fcenabled=1 
session.save_handler = files 
memory_limit = 256M 
wincache.chkinterval=5 
wincache.ucachesize=200 
wincache.scachesize=64 
wincache.enablecli=1 
wincache.ocenabled=0 


Questo fa alcune cose:

wincache.fcenabled=1 

Abilita il caching del file utilizzando WinCache (penso che sia t ha di default in ogni caso)

session.save_handler = files 

Cambia il gestore di sessione da WinCache (Azure Default) in un file standard basato per ridurre lo stress del motore della cache

memory_limit = 256M 
wincache.chkinterval=5 
wincache.ucachesize=200 
wincache.scachesize=64 
wincache.enablecli=1 

Imposta la dimensione WinCache a 256 megabyte per thread e limita la dimensione complessiva della cache. Ciò impone a WinCache di cancellare vecchi dati e riciclare la cache più spesso.

wincache.ocenabled=0 

Questo è il grande. DISATTIVARE la memorizzazione nella cache del codice operativo di WinCache. Questo è WinCache che memorizza nella cache gli script PHP in memoria. I file sono ancora memorizzati nella cache dalla prima riga, ma PHP viene interpretato per normale e non memorizzato nella cache in file binari di grandi dimensioni.

Sono passato da un arresto anomalo del sito Web di Azure circa una volta ogni 3 giorni con registri simili a quelli di 120 giorni senza problemi.

Buona fortuna!

+0

grazie per una risposta così dettagliata, spero che possa aiutare qualcuno che avrà questo tipo di problema, ma ho completamente dimenticato di menzionare la piattaforma che uso ... Io uso ASP.Net MVC e C#. –

Problemi correlati