AppFabric Caching ERRCA0016 解决办法

环境 AppFabric 1.1

SqlServer 2008 数据大于24000笔。

报错如下:
System.ServiceModel.FaultException: ErrorCode<ERRCA0016>:SubStatus<ES0001>:The connection was terminated, possibly due to server or network problems or serialized Object size is greater than MaxBufferSize on server. Result of the request is unknown. Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode<ERRCA0016>:SubStatus<ES0001>:The connection was terminated, possibly due to server or network problems or serialized Object size is greater than MaxBufferSize on server. Result of the request is unknown.

具体原因不明确,大致是因为数据量太大,即大数据量缓存。
开始只有12000 多条数据的时候没有任何问题,但是今天部署到正式环境的时候,因为有24000多条数据,一下子给我来了个措手不及。
按下面的解决步骤处理之后,我在TEST环境将数据增加到 62000 条(城市信息,不可有那么多)之后,复测,这个错误彻底消失了。

这只是一个补救方案,以后如果在有大量数据需要缓存到 AppFabric 应将这些数据分成小块,加上相同的Tag 在缓存到 AppFabric Caching 里。
但是目前多个项目里都有用到该缓存数据,如果分成小块存储,改动量还是蛮大的。

故采用如下解决方案:


步骤1:导出缓存配置
Export-CacheClusterConfig d:\AppFabric.config

步骤2:更改缓存配置
打开 d:\AppFabric.config
找到如下部分:
<advancedProperties>
<securityProperties mode="None" protectionLevel="None" />
</advancedProperties>
改成:
<advancedProperties>
<securityProperties mode="None" protectionLevel="None" />
<transportProperties maxBufferPoolSize="2147483647" maxBufferSize="2147483647" />
</advancedProperties>

即新增:<transportProperties maxBufferPoolSize="2147483647" maxBufferSize="2147483647" />
这两个小Buffer 的大小,可以参考:
http://msdn.microsoft.com/zh-cn/library/hh351483

SecurityProperties 的不用管,保持默认(跟据你的配置,mode 和 protectionLevel 可能不为 None)

步骤3:关闭缓存集群
Stop-CacheCluster

步骤4:导入缓存配置
import-CacheClusterConfig d:\AppFabric.config

步骤5:打开缓存集群
Start-CacheCluster

步骤6: 重启 IIS
iisreset


DataCacheClient 里的transportProperties节可以保持注释状态。

你可能感兴趣的:(APP)