Hello everybody,
I have a problem with one app that i had time using without problems, but now i am seeing sudden app crashes sometimes.
The Error log shows this:
A process serving application pool 'myApp' suffered a fatal communication error with the Windows Process Activation Service. The process id was '55892'. The data field contains the error number.
I have tried several things that i have read in this forum and others, like to increase the thread and connection limit and schedule the app recycling for certain times where there's not much load in the server, i had made this for various apps because my main app depends on those too.
I decided to make this change in my machine.config file:
<system.net>
<connectionManagement>
<add address="*" maxconnection="10000"/>
</connectionManagement>
</system.net>
and:
<processModel autoConfig="false" maxWorkerThreads="10000" maxIoThreads="10000" minWorkerThreads="500" requestQueueLimit="1000" requestLimit="Infinite"/>
Please, let me know if this is appropriate, because i don't know if this may have caused my problem, i recently increased my server RAM to 32 GB, i don't know if Windows is using it well or the IIS, but i have seen that when my server is at the most of the load the RAM consumption reaches almost 25GB more or less.
I have also configured DebugDiag to capture a dump and in the dump it says that an exception happened in one thread saying what i paste at the bottom.
http://localhost:3434/ is an app that is being used by the main app, i suspect that a recycling is happening in that app that causes the crash, so i turned notifications of the recycling and scheduled for the nights.
So, my question is, where can i continue looking for the error or how can i capture more information to determine what was the problem... maybe the 3434 port app reached its connection limit (something like 2 maximum connections for HTTP, i highlighted that part bellow). I have tried to increase that but i don't know exactly how, i read that because of the app is loopback i can't change that limit but i don't understand why is this.
I have read that a good idea is to configure the Visual Studio Remote Debugger to check the exception but i don't know if this could stop my app from working while it is being debugged, we can't afford to do that. Also i read about Process Explorer to monitor the w3wp.exe process but i am not sure if that is a good path to go, taking into account that i am currently using DebugDiag, what tools can i use to troubleshoot this?
Could you, please give me some clue? Thank you in advance.
P.S. Sorry if my english it's not very good, but i am spanish speaker actually.
Thanks again...
-----------------
Thread 375 - System ID 57804
Entry point clr!Thread::intermediateThreadProc
Create time 4/1/2017 12:06:54 PM
Time spent in user mode 0 Days 00:00:01.123
Time spent in kernel mode 0 Days 00:00:01.419
This thread is attempting to make an HttpWebRequest, however they do *not* appear to be waiting on the remote server to respond (eg. not 'on the wire')
HttpRequest URI:http://localhost:3434/machine.asmx
ServicePoint - ConnectionLimit:10000 CurrentConnections:4
The HttpWebRequest object is a loopback address so the ConnectionLimit is ignored
The thread has evidence of .net exceptions on the stack. Check the Previous .NET Exceptions Report (Exceptions in all .NET Thread Stacks) to view more details of the associated exception
.NET Call Stack
[[FaultingExceptionFrame]]
System_ni!System.Net.Connection.SyncRead(System.Net.HttpWebRequest, Boolean, Boolean)+14a
System_ni!System.Net.ConnectStream.WriteHeaders(Boolean)+444
System_ni!System.Net.HttpWebRequest.EndSubmitRequest()+84
System_ni!System.Net.HttpWebRequest.GetResponse()+315
System_Web_Services_ni!System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(System.Net.WebRequest)+11e
System_Web_Services_ni!System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(System.Net.WebRequest)+a
System_Web_Services_ni!System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(System.String, System.Object[])+10e
MyDLL.myapp.machine.sell(System.String, System.String, System.String, System.String, Int32)+b7
MyDLL.Sells.myapp.sell(MyDLL.myapp.Transaction)+15f
MyDLL.Sells.HighAvailabilityDistributor+RTask.Run()+cd
mscorlib_ni!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+285
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+9
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+57
mscorlib_ni!System.Threading.ThreadHelper.ThreadStart()+51
[[GCFrame]]
[[DebuggerU2MCatchHandlerFrame]]
[[ContextTransitionFrame]]
[[DebuggerU2MCatchHandlerFrame]]
Full Call Stack
KERNELBASE!RaiseException+39
clr!NakedThrowHelper2+c
clr!NakedThrowHelper_RspAligned+3d
[[FaultingExceptionFrame]]
clr!NakedThrowHelper_FixRsp+5
System_ni!System.Net.Connection.SyncRead(System.Net.HttpWebRequest, Boolean, Boolean)+14a
System_ni!System.Net.ConnectStream.WriteHeaders(Boolean)+444
System_ni!System.Net.HttpWebRequest.EndSubmitRequest()+84
System_ni!System.Net.HttpWebRequest.GetResponse()+315
System_Web_Services_ni!System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(System.Net.WebRequest)+11e
System_Web_Services_ni!System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(System.Net.WebRequest)+a
System_Web_Services_ni!System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(System.String, System.Object[])+10e
MyDLL.myapp.machine.sell(System.String, System.String, System.String, System.String, Int32)+b7
MyDLL.Sells.myapp.sell(MyDLL.myapp.Transaction)+15f
MyDLL.Sells.HighAvailabilityDistributor+RTask.Run()+cd
mscorlib_ni!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+285
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+9
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+57
mscorlib_ni!System.Threading.ThreadHelper.ThreadStart()+51
clr!CallDescrWorkerInternal+83
clr!CallDescrWorkerWithHandler+4a
clr!MethodDescCallSite::CallTargetWorker+251
clr!ThreadNative::KickOffThread_Worker+105
[[GCFrame]]
clr!Frame::Push+4d
clr!ManagedPerAppDomainTPCount::DispatchWorkItem+370
clr!ManagedPerAppDomainTPCount::DispatchWorkItem+299
[[DebuggerU2MCatchHandlerFrame]]
clr!Thread::ShouldChangeAbortToUnload+45
clr!Thread::DoADCallBack+2a1
[[ContextTransitionFrame]]
clr!Frame::Push+89
clr!ManagedPerAppDomainTPCount::DispatchWorkItem+370
clr!ManagedPerAppDomainTPCount::DispatchWorkItem+299
[[DebuggerU2MCatchHandlerFrame]]
clr!ManagedPerAppDomainTPCount::DispatchWorkItem+21f
clr!ThreadNative::KickOffThread+d2
clr!Thread::intermediateThreadProc+7d
kernel32!BaseThreadInitThunk+d
ntdll!RtlUserThreadStart+1d
---------------------------------------------------