【问题标题】:Timeout Exception trying to connect to Memcached server on AppHarbor尝试连接到 AppHarbor 上的 Memcached 服务器时出现超时异常
【发布时间】:2012-02-16 00:50:31
【问题描述】:

我一直在使用Enyim Memcached Client for .Net,试图连接到在AppHarbor 上运行的服务器。我的配置文件的相关部分如下所示:

  <enyim.com>
    <log factory="Enyim.Caching.DiagnosticsLogFactory, Enyim.Caching" />
    <memcached protocol="Binary">
      <servers>
        <add address="8d593f28-37d7-4c4f-a702-aa7687a85ea1.memcacher.com" port="11211" />
      </servers>
      <authentication
          type="Enyim.Caching.Memcached.PlainTextAuthenticator, Enyim.Caching"
          userName="changed to post on stack overflow"
          password="changed to post on stack overflow"
          zone="AUTHZ"
              />
      </memcached>
    </enyim.com>

我的连接一直超时。有什么想法吗?以下是 Enyim 客户端的日志:

2012-01-21 18:56:08 [错误] 7 Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl - 无法初始化池。 - System.TimeoutException:无法连接到 50.19.210.46:11211 在 Enyim.Caching.Memcached.PooledSocket.ConnectWithTimeout(套接字套接字,IPEndPoint 端点,Int32 超时) 在 Enyim.Caching.Memcached.PooledSocket..ctor(IPEndPoint 端点,TimeSpan connectionTimeout,TimeSpan receiveTimeout) 在 Enyim.Caching.Memcached.MemcachedNode.CreateSocket() 在 Enyim.Caching.Memcached.Protocol.Binary.BinaryNode.CreateSocket() 在 Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl.CreateSocket() 在 Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl.InitPool() 2012-01-21 18:56:08 [DEBUG] 7 Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl - 请求将 50.19.210.46:11211 标记为已死 2012-01-21 18:56:08 [调试] 7 Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl - FailurePolicy.ShouldFail(): True 2012-01-21 18:56:08 [警告] 7 Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl - 将节点 50.19.210.46:11211 标记为已死 2012-01-21 18:56:08 [调试] 7 Enyim.Caching.Memcached.DefaultServerPool - 节点 50.19.210.46:11211 已死。 2012-01-21 18:56:08 [DEBUG] 7 Enyim.Caching.Memcached.DefaultServerPool - 启动恢复计时器。 2012-01-21 18:56:08 [DEBUG] 7 Enyim.Caching.Memcached.DefaultServerPool - 计时器已启动。 2012-01-21 18:56:08 [DEBUG] 7 Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl - 从池中获取流。 50.19.210.46:11211 2012-01-21 18:56:08 [DEBUG] 7 Enyim.Caching.Memcached.MemcachedNode.InternalPoolImpl - 池已死或已处置,返回 null。 50.19.210.46:11211

更新:

原来我无法连接到 memcached 服务器的原因是因为它只能从 appharbor 的环境中访问。因此,对于遇到此问题的其他任何人,您需要在本地开发时使用本地 memcached 服务,然后在部署时简单地更改凭据(apphaorbor 实际上会自动为您执行)。问题已解决。

【问题讨论】:

  • 错误信息似乎表明服务器不接受 TCP 连接。我没有在这台机器上安装 telnet,否则我会尝试...

标签: timeout memcached appharbor enyim


【解决方案1】:

AppHarbor Memcacher 存储桶只能从 AppHarbor 应用服务器访问。 documentation 已被修改以清楚地反映这一点。

您应该使用本地安装的 memcached 服务器进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    相关资源
    最近更新 更多