Полагаю, у вас есть какое-то состояние гонки , которое появляется только с большим количеством клиентов.Какие режимы параллелизма и создания экземпляров вы используете для службы WCF?(См. MSDN: сеансы WCF, экземпляры и параллелизм в http://msdn.microsoft.com/en-us/library/ms731193.aspx)
. Если вы «теряете» ответы, первое, что я бы сделал, - это регистрация или отслеживание того, что происходит наНапример, когда клиент «не видит» ответ, получает ли сервер запрос? (Если так, что с ним происходит, и т. д. и т. п.)
Я бы тоже следил использование памяти - вы не говорите, какую операционную систему вы используете, но 512 МБ в наши дни ужасно скудные. Если вы когда-нибудь попадете в ситуацию подкачки на диск, она явно не будетбудьте добры.
Наконец, если предположить, что ваша служба привязана к процессору (то есть не требует больших вызовов базы данных и файловой системы), лучший способ повысить пропускную способность - это, вероятно, уменьшить сообщениеполезная нагрузка (размер провода), используйте наиболее производительные привязки (т. е. если клиент является .NET и вы им управляете, привязка NetTcp намного быстрее, чем HTTP), и, конечно, многопоточность вашего сервиса. ИМХО, с информацией, которую вы предоставили- и все остальноеal-polling, вероятно, хорошо, а нажатие может только усложнить ситуацию.Если это важно, вы действительно хотите привнести настоящий инженерный подход к проблеме и выявить / измерить свои узкие места.
Надеюсь, это поможет!