Le diagnostic de “Thread a été interrompue.” ASP.net
Je suis recevant un "Thread a été interrompue." dans la trace de la pile de mon Asp.net application. Je suis attampting à utiliser le windbg tecnique décrit ici à diagnostiquer:
http://blogs.msdn.com/b/asiatech/archive/2012/06/21/how-to-troubleshoot-httpexception-request-timed-out-asp-net-4-0-64-bit.aspx
Droit maintenant, je suis juste essayer d'attraper ce dans l'échantillon asp.net l'application fournie. Je peux obtenir de la asp.net demande de délai d'attente mais je ne peux pas obtenir la décharge décrit dans l'article de générer. Je pense que j'ai besoin de l'aide d'un windbg personne à comprendre où je vais mal. Je suis notamment les windbg entrées. Mon résultat est un peu différent, mais je ne peux pas dire qui l'adresse à utiliser dans la aspnet_timeout.fichier cfg décrit.
0:038> .symfix
0:038> .loadby sos clr
0:038> !name2ee system.web.dll System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded
Module: 59201000
Assembly: System.Web.dll
Token: 0600699b
MethodDesc: 592926e4
Name: System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded(System.DateTime)
JITTED Code Address: 593f4200
0:038> !U 593f4200
preJIT generated code
System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded(System.DateTime)
Begin 593f4200, size 29. Cold region begin 59d14150, size 23
Hot region:
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Web\ccb5cc864818531ed9725d02d3d078a6\System.Web.ni.dll
>>> 593f4200 55 push ebp
593f4201 8bec mov ebp,esp
593f4203 57 push edi
593f4204 56 push esi
593f4205 8bf1 mov esi,ecx
593f4207 8b4e10 mov ecx,dword ptr [esi+10h]
593f420a 8d4508 lea eax,[ebp+8]
593f420d ff7004 push dword ptr [eax+4]
593f4210 ff30 push dword ptr [eax]
593f4212 3909 cmp dword ptr [ecx],ecx
593f4214 e85f83f5ff call System_Web_ni+0x14c578 (5934c578) (System.Web.HttpContext.MustTimeout(System.DateTime), mdToken: 060025f7)
593f4219 8bf8 mov edi,eax
593f421b 85ff test edi,edi
593f421d 0f852dff9100 jne System_Web_ni+0xb14150 (59d14150)
593f4223 5e pop esi
593f4224 5f pop edi
593f4225 5d pop ebp
593f4226 c20800 ret 8
Cold region:
59d14150 8bce mov ecx,esi
59d14152 e849bb6cff call System_Web_ni+0x1dfca0 (593dfca0) (System.Web.RequestTimeoutManager+RequestTimeoutEntry.RemoveFromList(), mdToken: 0600699a)
59d14157 b9508f4859 mov ecx,offset System_Web_ni+0x288f50 (59488f50) (MT: System.Web.HttpApplication+CancelModuleException)
59d1415c e8ef4c63ff call System_Web_ni+0x148e50 (59348e50) (System_Web_ni)
59d14161 8bd0 mov edx,eax
59d14163 c6420401 mov byte ptr [edx+4],1
59d14167 8bcf mov ecx,edi
59d14169 e89a0963ff call System_Web_ni+0x144b08 (59344b08) (System_Web_ni)
59d1416e e9b0006eff jmp System_Web_ni+0x1f4223 (593f4223)
aspnet_timeout.cfg
<ADPlus Version='2'>
<!-- Configuring ADPlus to log all first chance exceptions -->
<!-- Will still create full dump for any type of second chance exceptions -->
<KeyWords>
<keyword Name="loadbysos"> .loadby sos clr</keyword>
<keyword Name="GetJIT"> !name2ee System.web.dll System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded </keyword>
<keyword Name="JITAddress"> .foreach /pS 0n13 ( record {!name2ee System.web.dll System.Web.RequestTimeoutManager+RequestTimeoutEntry.TimeoutIfNeeded}) { r $t1= ${record}; bp $t1+0xb14150 ".dump /ma /u ${AdpDumpDirEsc}\\Full Request timed out ${AdpProcName}_.dmp;g"; .printf"*breakpoint list*\n"; bl} </keyword>
</KeyWords>
<Settings>
<Option> NoDumpOnFirst </Option>
<RunMode> CRASH </RunMode>
</Settings>
<PreCommands>
<DebugActions> loadbysos; GetJIT; JITAddress </DebugActions>
</PreCommands>
</ADPlus>
OriginalL'auteur jlo | 2013-02-02
Vous devez vous connecter pour publier un commentaire.
Ce journal montre que vous avez un Délai d'attente quelque part. Mais vous devez avoir un autre événement sur votre ordinateur qui s'affiche dans la sorcière de la page tu as le temps.
Si vous avez beaucoup de temps hors que vous devez d'abord localiser la page qui font que, peut-être une page de téléchargement que tenir la session, ou à une page qui ont besoin de plus de temps pour s'exécute que le Délai défini.
Cette exécution délai d'attente est réglé sur le web.config avec 110 secondes valeur par défaut:
Avez-vous jamais comprendre quels sont les problèmes? Je vais avoir ThreadAbortedExceptions sur un appel à un service web, mais ne peut pas reproduire le problème localement, auprès d'un échantillon de service dans IIS7.
Il y a de temps à autre, les délais d'attente pour certaines raisons, vous ne pouvez pas l'éviter. Mais vous ne devriez pas avoir des délais d'attente sur un comportement normal, et ne pas faire de mauvaise conception et d'obtenir des délais d'attente parce que le sql prendre trop de temps à s'exécuter, ou le code de trop de temps pour terminer.
OriginalL'auteur Aristos