【问题标题】:Memcached-based beaker sessions not initializing on Zope start基于 Memcached 的烧杯会话未在 Zope 启动时初始化
【发布时间】:2014-04-02 03:15:27
【问题描述】:

我们使用基于 memcached 的烧杯会话进行分布式 Plone/Zope 设置。相同的设置在我们的 pre-prod 环境中运行良好,但是当我们转移到 prod 时,我们似乎无法让它连接到 11211 上的 memcached。

我在启动 Zope 时在机器上运行了 tcpdump,它甚至没有尝试连接。

我已经从 Zope 服务器远程登录到 memcached 服务器(与 ZEO 服务器相同)以测试连接,并且工作正常。

我尝试了两个不同的 prod Zope 服务器,结果是一样的。

我们的旧设置 (4.2.5) 在另一个 prod 服务器上运行,当我们启动它时,我们得到了预期的行为,它连接到 memcached 就好了。不幸的是,我们还有一个 4.3.2 设置(与 prod 相同)在 pre-prod 中运行,它也可以正常工作。我无法确定设置中的任何实质性差异。

所有系统都在独立运行(不受系统/apt 控制)Python 2.7s。

zope.conf 的相关部分

# Beaker Configuration
zope-conf-additional =
<product-config beaker>
    cache.type              ext:memcached
    cache.url               ${ips:memcached}
    cache.data_dir          ${buildout:directory}/var/cache/data
    cache.lock_dir          ${buildout:directory}/var/cache/lock
    cache.regions           short, long
    cache.short.expire      60
    cache.long.expire       3600

    session.type            ext:memcached
    session.url             ${ips:memcached}
    session.data_dir        ${buildout:directory}/var/sessions/data
    session.lock_dir        ${buildout:directory}/var/sessions/lock
    session.key             beaker.session
    session.secret          magicalsecretcornedbeefhash
</product-config>

zcml = 集体烧杯

versions.cfg 中的相关版本:

# Beaker
Beaker = 1.6.4
Products.BeakerSessionDataManager = 1.1
collective.beaker = 1.0b3
python-memcached = 1.47

我已经测试过 ${ips:memcached} 在启动时会产生正确的值。 Zope 日志中没有记录任何错误,但没有创建烧杯会话,也没有尝试连接到 memcached。 Memcached 运行愉快,但不产生任何日志(似乎从来没有)。

任何关于可能导致此问题的想法或建议都会有所帮助。更多背景:

Ubuntu 12.04.4 LTS
Linux 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 17:37:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

bin/构建:

#!/opt/zope/pythons/python-2.7/bin/python

import sys
sys.path[0:0] = [
    '/opt/zope/buildouts/FOO/eggs/distribute-0.6.28-py2.7.egg',
    '/opt/zope/buildouts/FOO/eggs/zc.buildout-1.7.1-py2.7.egg',
]

【问题讨论】:

  • 更新:将工作 ZODB 从我们的预生产环境中“解决”问题。仍然没有根本原因。

标签: session memcached plone zope beaker


【解决方案1】:

在进入生产阶段时,请记住Products.BeakerSessionDataManager README 中的最后一部分:

3. In the ZMI, delete the ``session_data_manager`` object and add a
   ``Beaker Session Data Manager``.

【讨论】:

  • 由于我们最终用暂存环境中的工作副本替换了 ZODB,我无法确认或否认这解决了问题,但听起来是对的。
猜你喜欢
  • 1970-01-01
  • 2012-05-04
  • 2012-11-23
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多