views:

218

answers:

2

I have two WCF apps communicating one-way over named pipes. All is nice, except for one thing: Normally, the request/response cycle takes zero (marginal) time. However, if there was a time span of, say, half a minute without any communication, the request/response increases up to ~300-500ms.

I looked around the net and I got the idea of using a heart beat/ping mechanism to keep the communication channel busy. Using trial and error I found that when doing a request each 10 seconds, the response times stay low. Starting at around 15s intervals, the "hiccup" response times begin to appear.

Now I'm wondering where this phenomenon is originating from. I tried setting alle conceivable timeouts on both sides to > 1 minute, but that did not help.

Can anybody explain what's going on there?

A: 

Is it possible that the idling process is being paged to disk? If you keep the processes at both ends busy, but don't make the connection busy, does it still happen?

That may well not be it, but it's possibly worth a try.

Jon Skeet
I tried it and added to both processes a thread doing some silly calculations. CPU usage remained at 0% for both of them, but I think it was still enough to keep them from being paged out. Alas, the described probelm remains unaffected.It was definitely worth a try, though. Thanks for the suggestion-
Sven Künzler
+1  A: 

Check out Wenlong Dong's blog post, Why Does WCF Become Slow After Being Idle For 15 Seconds?

The post also includes a workaround until it gets fixed.

Sam Pearson