Tom Knowlton
asked on
Web service - unclosed connections
I've been asked to take a look at a problem we're having with web service connections not being closed.
My understanding is that after 4 minutes the connections are closed by the server?
I guess the problem is that we are running out of available connections?
I am looking for some advice on some common things to look for in the C# source that may be causing the connections not to close.
How does garbage collection and web services work normally?
Is there a way to ensure that the socket connection closes immediately after the web service call is finished?
I was shown on the server what the unclosed connections look like:
From a scalability perspective, some of the people I have spoken to have suggested that this problem has only recently begun to happen because the web service is getting called more often. So, bugs that you might get away with start to come to the surface that were not evident before. They think that is what we are experiencing.
My understanding is that after 4 minutes the connections are closed by the server?
I guess the problem is that we are running out of available connections?
I am looking for some advice on some common things to look for in the C# source that may be causing the connections not to close.
How does garbage collection and web services work normally?
Is there a way to ensure that the socket connection closes immediately after the web service call is finished?
I was shown on the server what the unclosed connections look like:
netstat -bn
TCP 127.0.0.1:2808 127.0.0.1:28002 ESTABLISHED 2360
[avscc.exe]
TCP 10.1.10.27:5070 8.26.196.251:80 CLOSE_WAIT 1648
[VCTray.exe]
TCP 127.0.0.1:4548 127.0.0.1:7031 CLOSE_WAIT 2632
[jusched.exe]
///////////// these connections are not getting closed ///////////////////////////
TCP 10.1.10.27:4887 10.1.10.22:135 TIME_WAIT 0
TCP 10.1.10.27:4888 10.1.10.22:1025 TIME_WAIT 0
TCP 10.1.10.27:4993 10.1.20.2:443 TIME_WAIT 0
TCP 10.1.10.27:4994 10.1.20.2:443 TIME_WAIT 0
TCP 10.1.10.27:4995 10.1.20.2:443 TIME_WAIT 0
TCP 10.1.10.27:4996 10.1.20.2:443 TIME_WAIT 0
TCP 10.1.10.27:4997 10.1.20.2:443 TIME_WAIT 0
From a scalability perspective, some of the people I have spoken to have suggested that this problem has only recently begun to happen because the web service is getting called more often. So, bugs that you might get away with start to come to the surface that were not evident before. They think that is what we are experiencing.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thank you.
In case I can't find the sample code, can you show me in a code snippet how to close the connection?
In case I can't find the sample code, can you show me in a code snippet how to close the connection?
Just checked on my wcf4 service if you browse to the .svc url you get the sample..
here is the output of that page though, warts and all...
-------------------------- ---------- ---------
svcDataSync Service
You have created a service.
To test this service, you will need to create a client and use it to call the service. You can do this using the svcutil.exe tool from the command line with the following syntax:
svcutil.exe http://localhost/BytesStore/svcDataSync.svc?wsdl
This will generate a configuration file and a code file that contains the client class. Add the two files to your client application and use the generated client class to call the Service. For example:
C#
class Test
{
static void Main()
{
IsvcDataSyncClient client = new IsvcDataSyncClient();
// Use the 'client' variable to call operations on the service.
// Always close the client.
client.Close();
}
}
Visual Basic
Class Test
Shared Sub Main()
Dim client As IsvcDataSyncClient = New IsvcDataSyncClient()
' Use the 'client' variable to call operations on the service.
' Always close the client.
client.Close()
End Sub
End Class
here is the output of that page though, warts and all...
--------------------------
svcDataSync Service
You have created a service.
To test this service, you will need to create a client and use it to call the service. You can do this using the svcutil.exe tool from the command line with the following syntax:
svcutil.exe http://localhost/BytesStore/svcDataSync.svc?wsdl
This will generate a configuration file and a code file that contains the client class. Add the two files to your client application and use the generated client class to call the Service. For example:
C#
class Test
{
static void Main()
{
IsvcDataSyncClient client = new IsvcDataSyncClient();
// Use the 'client' variable to call operations on the service.
// Always close the client.
client.Close();
}
}
Visual Basic
Class Test
Shared Sub Main()
Dim client As IsvcDataSyncClient = New IsvcDataSyncClient()
' Use the 'client' variable to call operations on the service.
' Always close the client.
client.Close()
End Sub
End Class
ASKER
Perfect...yes...I eventually found this.
Please see my new question:
https://www.experts-exchange.com/questions/27631964/When-to-close-the-web-service-client-connection-in-a-scaled-environment.html
Please see my new question:
https://www.experts-exchange.com/questions/27631964/When-to-close-the-web-service-client-connection-in-a-scaled-environment.html
https://www.experts-exchange.com/questions/27630876/Necessary-or-optional-to-close-a-webservice-client-connection.html