2011-02-11 12 views
5

sto vivendo lo stesso problema esatto come un utente rapporti sul eggheadcafe, ma non sanno quali misure adottare dopo aver letto la seguente risposta .:La sessione IIS si blocca - Come risolvere "il sito Web che perde risorse per i finalizzatori"?

due problemi si dovrebbe inseguire: 1. Perché è il sito web che perde risorse per i finalizzatori. Questo è cattiva 2. Qual è il codice Oracle in attesa di - lavoro con il supporto di Oracle su di esso

Questo è il problema:

Ho un problema intermittente con un sito web ospitato su IIS6 (w2k3 sp2).

Appare casualmente agli utenti quando fanno clic su un collegamento ipertestuale entro una pagina. La richiesta viene inviata al server Web ma una risposta non è mai restituita. Se l'utente prova a passare a un altro collegamento ipertestuale che è non in grado di (ad esempio il sito Web appare da appendere per quell'utente). Altri utenti del sito al momento non sono colpiti da questa appendere e se l'utente il problema si apre una nuova sessione http (chiusura IE e aprire nuovamente il sito web ) non sono più esperienza il blocco.

Ho inserito un debugger (IISState) su il processo w3wp con il seguente output . Le voci con "Thread è in attesa del rilascio di un blocco. In cerca di proprietario del lucchetto." sembrano potrebbero causare il problema. Può qualcuno dire a quale blocco il processo è in attesa?

Grazie

http://www.eggheadcafe.com/software/aspnet/33799697/session-hangs.aspx

Nel mio caso la mia applicazione .Net C# MVC viene eseguito su un database MySQL per i dati e un database MS SQL per l'adesione .Net.

Spero che qualcuno con una maggiore conoscenza di IIS possa aiutare a risolvere questo problema.

risposta

1

Sembra che nelle chiamate al database si verifichi una condizione di competizione risultante in un deadlock a livello di database. Si consiglia di esaminare le impostazioni presenti nel pool di applicazioni per le connessioni al database. Probabilmente avrete bisogno di mettere alcuni controlli in qualche parte o ridefinire le procedure al fine di ridurre la probabilità della gara:

http://msdn.microsoft.com/en-us/library/ms178104.aspx

+0

Grazie per la risposta. Ora sto monitorando i deadlock. Il registro non è stato ancora segnalato. Spero di ottenere più risultati il ​​lunedì quando l'applicazione è in uso intensivo – CLRBTH

0

mi spiegherebbe l'esperto appendere a causa di sessione di serializzazione. Non la parte relativa al salvataggio/caricamento da una sorgente, ma che ASP.NET non consente alla stessa sessione di eseguire contemporaneamente due pagine parallele, a meno che non vengano eseguite con una sessione di sola lettura. La successiva viene eseguita nella direttiva della pagina o in web.config, impostando EnableSessionState = "ReadOnly".

Il tuo problema esiste ancora, questo non cambierà il blocco del primo thread.Vorrei verificare che le connessioni del database siano state disposte correttamente. Tuttavia, non hai mai menzionato alcun database Oracle nella tua domanda (solo Mysql e SQL Server). Perché stai usando i driver Oracle? (Sembra un posto valido per iniziare il debug.)

Tuttavia, come affermato da David Wang nella sua risposta nella tua domanda collegata, la seconda parte del tuo problema è un blocco che non è mai stato rilasciato. Avrai bisogno del supporto di Oracle (o del suo codice sorgente) per eseguire il debug di questo ulteriore.

+0

Forse avrei dovuto essere più chiaro nella mia domanda. La descrizione del problema è simile alla mia, nel mio caso è un'applicazione C# MVC in esecuzione su MySQL e un database SQL. Quindi non sto usando Oracle :) Grazie per la risposta, cambiare sessione in sola lettura per migliorare almeno l'esperienza utente. Sono anche sospettoso che questo sia in qualche modo un problema di rete. L'utente che segnala la maggior parte dei blocchi è ora connesso al server di produzione tramite VPN, quindi utilizza l'indirizzo IP locale. Per la prima volta da settimane ha riportato un giorno senza sospensioni. È spiegabile? – CLRBTH

Problemi correlati