Это может быть потому, что вы запускаете дополнительные экземпляры с каждым сообщением? Существует ограничение на максимальное количество активных экземпляров одновременно. Если вы достигнете предела, ваш запрос для другого экземпляра будет ждать, пока этот предел больше не будет достигнут, но вы получите тайм-аут, прежде чем это произойдет.
Значение по умолчанию зависит от количества имеющихся у вас процессоров.
Вы можете изменить ограничения в вашем приложении / web.config:
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceThrottling maxConcurrentCalls="16" maxConcurrentInstances="1000"/>
</behavior>
</serviceBehaviors>
</behaviors>
См. ServiceThrottling на MSDN для получения дополнительной информации.