Services have a built-in defense mechanism, called throttles, to prevent them from taking over too much of the system's resources. There are three of these throttles that are controllable through a ServiceThrottlingBehavior that you can supply to the service.
Knowledge of these throttle values can help you track down problems when you are achieving concurrency for a while with client connections but suddenly hit a wall when the number of clients is pushed farther. These throttles are going to stack with the number of clients that are buffered at the transport level, for example by having the connections sit in kernel TCP buffers. You can tell the two apart because the throttles are what drive the steady-state simultaneous client processing load while the transport quotas stack with the throttles for the initial maximum client backlog.
The number of instances is unlimited by default, but there are very conservative default throttles of 10 simultaneous sessions and 16 simultaneous service calls. During the beta, the number of sessions was unlimited and the MaxConcurrentCalls throttle was set to 64, which made it easy to guess when someone had a throttling problem. They would report that the throughput mysteriously fell off somewhere between 50 and 100 clients.
Next time: Slow Proxy Discovery