Domanda

Ho un servizio WCF che richiede un certo tempo di risposta (meno di 1 minuto).

Il mio problema è che ogni tanto, il più delle volte al mattino il servizio richiede molto tempo per rispondere (a volte più di 2 minuti).

mi viene da pensare che questo è perché l'applicazione è riciclato e la prima esecuzione deve ricompilare.

Ci sono altre ragioni per cui questo potrebbe accadere?

E 'possibile disattivare il riciclo app? E se lo è, sarà che causano effetti collaterali o instabilità? Sto assumendo ci deve essere un motivo per cui sono impostate le applicazioni ASP.NET per riciclare.

C'è qualcos'altro che può essere fatto per migliorare le prestazioni che prima run?

È stato utile?

Soluzione

In pratica le seguenti regole dettano quando un'applicazione viene riciclato o scaricata:

  1. Dopo il tempo App Pool Riciclare è stato raggiunto -. Per impostazione predefinita, questo è ogni 29 ore credo
  2. Un tempo impostato dopo l'ultima richiesta di applicazione.

Utilizzo di un keep-alive di eseguire il ping il servizio avrebbe risolto 2, e poi si era appena avere a che fare con 1.

A seconda della versione di IIS, ci sono un po 'diversi modi per configurare questo.

  1. Per IIS 6
  2. Per IIS 7

Il tempo di inattività fuori penso che sarebbe normalmente default "infinte", ma può essere configurata attraverso la elemento processModel (attributo idleTimeout) dei file di configurazione.

Per quanto riguarda prima esecuzione run - senza guardare la vostra applicazione è difficile da dire, avere si esegue qualcosa di simile a dotTrace o in un altro profiler su di esso?

State facendo un sacco di ricerche intensive e il caching dei dati in quel primo carico? Questi possono essere differiti?

Altri suggerimenti

Sì, è possibile evitare che l'AppPool dal riciclo. Un'altra opzione potrebbe essere quella di creare un processo di keep-alive di eseguire il ping continuamente il servizio per mantenere il processo di lavoro di dormire.

I problemi di prestazioni possono essere causati da qualche cosa che non hanno escluso prima. Dal momento che non hanno escluso nulla, potrebbe essere cauased dal nulla.

Forse un'idea stupida: hai potuto programmare una console app per colpire il vostro servizio a esempio 05:30 del mattino, in modo che questa richiesta sarebbe voluto molto tempo per l'esecuzione, e gli utenti regolari in arrivo dopo che non avrà questo problema?

Certo - non è a che fare con la causa principale, ma per il momento, potrebbe essere una soluzione utile -? No

Marc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top