Alex Rivera | Logout

WCF Service: Status 200 with sc-win32-status of 64

Asked 2012-09-05T09:22:27.447
19

We observed the following behavior on one of the servers hosting a WCF service on IIS 6.0:

  1. The IIS log shows a high value for time-taken (> 100000)
  2. The HTTP status code is 200
  3. sc-win32-status code shows a value of 64

I found out that sc-win32-status code of 64 indicates "The specified network is no longer available"

Initially I suspected that it could be because of limits set on MinFileBytesPerSecond, which sets the minimum throughput rate that HTTP.sys enforces when sending data from the client to the server, and back from the server to the client. But the value for sc-bytes and cs-bytes indicate that the amount of data is sent is within the range generally observed for the service.

Also note that the WCF service is hosted on four boxes and is load-balanced, but the problem occurs only one of the servers. (but not essentially on the same server). The problem is also intermittent.

Has anybody else encountered this error? Any clues about what could be wrong?

Update

Note: Observation on IIS 7.5 (IIS version does not really matter)

I was able to replicate the issue. The issue occurs if:

1. The WCF service takes a long time to respond
2. The client proxy times out before it receives a response from the server. In this case it leads to TimeoutException on the client.
3. The server keeps waiting for TCP ACK for the client, which it would never receive.

Hence a long timeout (TCP socket timeout (default value: 4 minutes) and sc-win32-status of 64

So essentially it appears that WCF code is taking a long time to respond and the

Edit
Report

1 Answer

0

IIS put the services into sleep to save recources.

Copied from here (WCF REST Service goes to sleep after inactivity)

The application pool hosting your service defines Idle Time-out property (advanced settings of app pool in IIS management console) which defaults to 20 minutes. If no request is received by the app pool within idle timeout the worker processes serving the pool is terminated. After receiving a new request the IIS must start the process again, the process must load application domain and all related assemblies, compile .svc file, run the service host and process the request.The solution can be increasing idle time-out but the meaning of this time-out is correct handling of server resources. If the process is not needed it should be stopped. Another ugly workaround is using some ping process (for example cron job or scheduled task on the server) which will regularly ping call some method on the service or page in the same application.

answered 2013-06-15T10:41:11.037

Your Answer