servizio di asp.net WCF lento ... sarà la disabilitazione asp.net app aiuto di riciclaggio?
-
11-09-2019 - |
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?
Soluzione
In pratica le seguenti regole dettano quando un'applicazione viene riciclato o scaricata:
- Dopo il tempo App Pool Riciclare è stato raggiunto -. Per impostazione predefinita, questo è ogni 29 ore credo
- 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.
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