У меня есть приложение, состоящее из нескольких служб WCF, некоторые из которых реализованы в Workflow Foundation (.NET 3.5), другие просто на C #.Эти службы взаимодействуют друг с другом по netNamedPipeBinding по соображениям производительности.Проблема в том, что я вижу все больше и больше CommunicationExceptions и лежащих в их основе PipeExceptions, как только увеличивается загрузка системы.Самое смешное, что эти транзакции, в конце концов, заканчиваются.Одна из причин этого заключается в том, что у нас есть механизм повторения в рабочих процессах, но даже вызовы из простых служб C # выполняются успешно, хотя я вижу эти ошибки в трассировках WCF.Есть ли какой-нибудь механизм повторов в подсистеме именованных каналов Windows или что-то в этом роде?
Однако я хочу, чтобы эти ошибки были исправлены, или, по крайней мере, я понял основную проблему.Я чувствую, что они влияют на производительность и стабильность приложения.Как правильно выполнить диагностику причины этих ошибок, если я не вижу других исключений, исходящих от самих служб?
Вот некоторые из исключений, которые я получаю:
PipeException: Произошла ошибка чтения из канала: канал завершен.(109, 0x6d).
И:
PipeException: Операция не может быть завершена, поскольку канал был закрыт.Это могло быть вызвано выходом приложения на другом конце канала.
в исключении TimeoutException: Соединение канала было прервано из-за асинхронного чтения изтруба не завершена в течение установленного времени ожидания 00:02:00.Время, отведенное для этой операции, могло быть частью более длительного тайм-аута.
Теперь исключение тайм-аута, по-видимому, связано с тем, что система испытывает проблемы с обработкой нагрузки.Эти операции довольно малы, но их количество, похоже, является проблемой.Или это может быть результатом того, что предыдущие соединения канала были прерваны и не возвращены в пул?
Я попытался поэкспериментировать с поведением serviceThrottling в конфигурации WCF, чтобы увеличить количество экземпляров и т. Д., Но эти ошибки продолжают появляться,Любые советы?
/ EDIT: я включил трассировку WCF и ведение журнала сообщений.Вот где я вижу PipeExceptions и CommunicationExceptions.Само приложение не показывает никаких ошибок.Мы довольно подробно проинструктировали службы WCF, чтобы все исключения регистрировались с использованием log4net, и я не вижу никаких ошибок в этих журналах вообще.Кажется, все это происходит на уровне WCF.