I assume that you have some kind of race condition that only appears with a lot of customers. What concurrency and instancing modes are used for your WCF service? (See MSDN: WCF, Instancing, and Concurrency Sessions at http://msdn.microsoft.com/en-us/library/ms731193.aspx )
If you "lose" the answers, the first thing I would like to do is to start logging or tracing what happens on the server. For example, when the client "does not see" the answer, does the server receive the request? (If so, what happens to him, etc.)
I will also monitor the memory usage - you are not saying which OS you are using, but 512 MB is terribly skinny these days. If you ever encounter a swap-to-disk situation, this is clearly not a good thing.
Finally, assuming your service is CPU-related (i.e. there are no heavy database and file system queries), the best way to increase throughput is probably to reduce the message payload (wire size), use the most efficient bindings (i.e. if the client is .NET and you control it, NetTcp binding is much faster than HTTP) and, of course, multi-threaded service. IMHO, with the information you provided - and everything else is equal - the survey is probably fine, and a push can just complicate the situation. If this is important, you really want to bring a real engineering approach to the problem and identify / measure your bottlenecks.
Hope this helps!
source share