2013-10-08 3 views
0

В настоящее время я использую Azure кэш в моем WCF приложения, и я получил это исключение при вводе данных в кэш:Azure исключение кэша при хранении данных

Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode < ERRCA0017> : SubStatus < ES0006>: Временная ошибка. Повторите попытку позже. (Один или несколько указанных серверов кеша недоступны, что может быть вызвано занятой сетью или серверами. Для локальных кластеров кэша также проверяйте следующие условия. Убедитесь, что для этой учетной записи клиента предоставлено разрешение безопасности, и убедитесь, что AppFabric Caching Service допускается через брандмауэр на все хосты кэша Также MaxBufferSize на сервере должна быть больше или равна сериализованным размером объекта, посланного от клиента)

А вот внутреннее исключение:..

System.ServiceModel.CommunicationException: Соединение сокета было прервано. Это может быть вызвано ошибкой обработки вашего сообщения или превышением времени приема удаленным хостом или проблемой сетевого ресурса. Локальный тайм-аут гнезда был «00: 00: 30». ---> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным узлом в System.Net.Sockets.Socket.Send (байт [] буфер, смещение Int32, размер Int32, гнездо сокета SocketFlags) at System.ServiceModel.Channels.SocketConnection.Write (Byte [] buffer, Int32 offset, Int32 size, Boolean немедленный, тайм-аут TimeSpan) --- Конец внутренней трассировки стека объектов --- в System.ServiceModel.Channels.SocketConnection. Write (Byte [] buffer, Int32 offset, Int32 size, Boolean немедленный, тайм-аут TimeSpan) в System.ServiceModel.Channels.SocketConnection.Write (буфер Byte [], смещение Int32, размер Int32, логическое мгновенное время, тайм-аут TimeSpan, буфер BufferManager bufferManager) в System.ServiceModel.Channels.BufferedConnection.WriteNow (буфер Byte [], смещение Int32, размер Int32, тайм-аут TimeSpan, BufferMan ager bufferManager) в System.ServiceModel.Channels.BufferedConnection.Write (Byte [] buffer, Int32 offset, Int32 size, Boolean немедленный, TimeSpan timeout, BufferManager bufferManager) в System.ServiceModel.Channels.FramingDuplexSessionChannel.OnSend (Message message, TimeSpan тайм-аут) на System.ServiceModel.Channels.OutputChannel.Send (сообщение Message, TimeSpan таймаут) в Microsoft.ApplicationServer.Caching.CacheResolverChannel.Send (сообщение Message, TimeSpan таймаут) в Microsoft.ApplicationServer.Caching.WcfClientChannel.SendOnChannel (Конечная точка конечной точки, TimeSpan & тайм-аут, обратный вызов WaitCallback, состояние объекта, логический асинхронный канал, канал IDuplexSessionChannel, сообщение сообщения) --- Конец внутренней трассировки стека исключений --- в Microsoft .ApplicationServer.Caching.DataCache.ThrowException (ResponseBody respBody) в Microsoft.ApplicationServer.Caching.DataCache.ExecuteAPI (RequestBody reqMsg, слушатель IMonitoringListener) в Microsoft.ApplicationServer.Caching.DataCache.InternalPut (ключ String, значение Object, DataCacheItemVersion oldVersion , Тайм-аут TimeSpan, теги DataCacheTag [], область строк, слушатель IMonitoringListener) в Microsoft.ApplicationServer.Caching.DataCache. <> c_ DisplayClass19.b _18() в Microsoft.ApplicationServer.Caching.MonitoringListenerFactory.EmptyListener.Microsoft.ApplicationServer.Caching.IMonitoringListener.Listen [TResult] (Func`1 innerDelegate) в Microsoft.ApplicationServer.Caching.DataCache ,Помещенный (ключ String, значение объекта)

Проблема заключается в это сообщение является очень общим, не дает много деталей

Я уже пытался увеличить requestTimeout в dataCacheClient до 2 минут. Это не решает проблему, поэтому не следует из-за подключения к тайм-ауту кеша

Я знаю, что это не из-за большого количества данных, так как у того же объема данных на производственном сервере нет проблем (это происходит на сервере тестирования). Я подключаюсь с локального компьютера к тестовой базе данных, а также не имеет проблем

У кого-нибудь есть идеи, как решить эту проблему? Благодаря

Ниже моя текущая конфигурация кэша Azure

<dataCacheClient name="default" requestTimeout="30000" isCompressionEnabled="true" > 
    <localCache isEnabled="true" sync="TimeoutBased" objectCount="4194304" ttlValue="80000" /> 
</dataCacheClient> 
+0

хорошо, сообщения об ошибках Microsoft часто бывают общими. – Raptor

ответ

0

Пожалуйста, установите ReceiveTimeout Property между 40-50 секунд в вашем коде, чтобы избежать сокетов время ожидания.

Имейте логику повтора в своем коде, чтобы повторить операцию, если ошибка говорит об этом.

И если эта проблема сохраняется в течение более длительного периода времени, взгляните на счетчики производительности экземпляра кеша, чтобы увидеть, приближается ли вы на 100% ограничение или максимальная пропускная способность в каком-то смысле, и в этом случае вы должны переоценить свою емкость, см. Capacity Planning Considerations for In-Role Cache (Windows Azure Cache)

Смежные вопросы