1

使用...

  1. CacheManager.Core v1.1.2
  2. CacheManager.Couchbase v1.1.2
  3. CouchbaseNetClient v2.5.4
  4. Couchbase 服务器 EE v4.5.0

我尝试使用 CacheManager 的 Couchbase 配置设置缓存层,但似乎正在打开大量连接,导致 Web 服务器上的临时端口耗尽。

这是我的配置设置:

private static ICacheManager<object> dataCacheFactory { get; set; }
static CacheHelper()
{
    var cacheConfig = new ConfigurationBuilder()
        .WithCouchbaseCacheHandle("couchbaseClients/couchbase")
        .WithExpiration(ExpirationMode.Sliding, new TimeSpan(0, 15, 0))
        .Build();

    dataCacheFactory = new BaseCacheManager<object>(cacheConfig);
}

还有我的 Couchbase web.config 设置:

  <couchbaseClients>
    <couchbase useSsl="false">
      <servers>
        <add uri="http://192.168.1.3:8091/pools" />
      </servers>
      <buckets>
        <add name="default" useSsl="false" password="">
          <connectionPool name="custom" maxSize="10" minSize="5" />
        </add>
      </buckets>
    </couchbase>
  </couchbaseClients>

当客户端被调用时:

 public static TResult CacheHandler<TResult>(string key, Func<TResult> codeBlock)
    {
        var cache = dataCacheFactory;
        object data = cache.Get(key);

        if (data != null)
        {
            return (TResult)data;
        }
        else
        {
            var value = codeBlock();
            try
            {
                cache.Put(key, value);
            }
            catch (Exception) { }
            return value;
        }
    }

任何指导将不胜感激!

编辑:我的本地计算机上的这段代码没有问题,但是当站点部署在 IIS 上的流量较高的环境中时,事件查看器中的以下 Windows 事件的结果是什么:

由于所有此类端口都在使用中,从全局 TCP 端口空间分配临时端口号的请求失败。

... 和...

TCP/IP 未能建立传出连接,因为选定的本地端点最近被用于连接到同一个远程端点。当传出连接以高速率打开和关闭时,通常会发生此错误,从而导致使用所有可用的本地端口并强制 TCP/IP 将本地端口重新用于传出连接。为了最大限度地降低数据损坏的风险,TCP/IP 标准要求在从给定本地端点到给定远程端点的连续连接之间经过的最短时间段。

4

0 回答 0