无法请求重置用户密码

时间:2013-04-29 00:50:59

标签: plone

我在Plone 4.1.6,如果你进入网站设置>用户和组,然后单击用户的“重置密码”复选框,然后单击“应用更改”,系统挂起,5分钟后我从Apache收到此错误:

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /@@usergroup-userprefs.

Reason: Error reading from remote server

Apache/2.2.22 (Ubuntu) Server at 192.168.1.4 Port 443

错误发生后,我必须重新启动Plone才能让Plone再次响应。

我的环境:

  • Plone 4.1.6(4115)
  • CMF 2.2.6
  • Zope 2.13.15
  • Python 2.6.8(unknown,Apr 27 2013,22:01:31)[GCC 4.6.3]
  • 扩展中心:
    • 重氮主题支持1.0b8 安装控制面板以允许使用Diazo进行动态主题
    • ThèmePloneclassique 1.1.2 L'ancienthèmeutilisédansPlone 3 et versionsantérieures。
    • 静态资源存储1.0b5 用于存储和提供静态资源文件的文件夹
  • 我在Aapache后面运行Plone
  • 本地测试
  • 使用VirtualBox 4.2.12运行虚拟机
  • Plone安装在虚拟机上
  • Plone版本是4.1.6
  • 虚拟机正在运行Ubuntu 12.04 AMD64
  • 拥有2个客户的Zeocluster
  • 在Plone实例中正确配置了电子邮件

据我所知,我的Plone实例一切正常,包括用户和组中的其他复选框。

我使用ssmtp进行测试,从vm上的节点向我发送电子邮件,发送电子邮件没问题。

我确实尝试了fg模式,一切似乎都没问题。

我确实检查了Apache日志,一切似乎都没问题。

如果创建一个ssh隧道以避免Apache并直接访问Plone,我没有代理错误,但系统会永远挂起。

我不知道如何解决这个问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

python进程挂起时是否会占用大量CPU?使用top进行检查。

安装ZopeHealthWatcher,然后当它再次挂起时,使用zope运行状况监视器获取每个线程正在执行的操作的列表。这通常会让你知道代码在循环中的位置,某种无限递归(这可能发生在zodb中,特别是在获取和类似命名的东西中),或者它只是阻塞某些东西(例如,mtu在连接到smtp服务器的网络链接上发出问题,因此小型电子邮件可以工作但很大的电子邮件会挂起。)

你也可以停止smtp服务器(或者只是改变plone控制面板中的端口),看看你是否至少得到了一个例外。默认情况下,如果Plone无法连接到smtp服务器,则应该引发异常。

在非常极端的情况下,你可以use gdb连接到挂起的python进程(我通常使用“top”来找到一个坐在100%CPU上的进程),然后你可以找到它挂起的位置。这比使用ZopeHealthWatcher要复杂得多,但是我最近使用这种方法成功地追溯了报告字体代码中的竞争条件,它非常强大。关于gdb的好处是,它会停止进程并允许你逐步调试代码,以及调用堆栈的上下,不像ZopeHealthWatcher只是给你一个快照(有点像Heissenberg的不确定性,你可以观察它在哪里现在是......)