Plone 无法请求用户密码重置

Plone 无法请求用户密码重置,plone,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: Er

我在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
  • 佐佩2.13.15
  • Python 2.6.8(未知,2013年4月27日,22:01:31)[GCC 4.6.3]
  • 插件:
    • 重氮主题支持1.0b8 安装一个控制面板,允许动态使用Diazo制作主题
    • 第1.1.2节 这本书的第三版和第三版都有
    • 静态资源存储1.0b5 用于存储和服务静态资源文件的文件夹
  • 我在阿帕奇后面跑普隆
  • 本地测试
  • 使用VirtualBox 4.2.12运行虚拟机
  • 虚拟机上安装了Plone
  • Plone版本是4.1.6
  • 虚拟机正在运行Ubuntu 12.04 AMD64
  • Zeocluster拥有2个客户
  • 电子邮件已在Plone实例中正确配置
正如我所知,我的Plone实例(包括用户和组中可用的其他复选框)一切正常

我用ssmtp做了一个测试,从虚拟机上的节点向我自己发送电子邮件,发送电子邮件没有问题

我试过fg模式,一切都很好

我确实检查了Apache日志,一切似乎都正常

如果创建ssh隧道以避免Apache并直接访问Plone,则不会出现代理错误,但系统将永远挂起


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

python进程挂起时会占用大量CPU吗?使用顶部进行检查

安装,然后当它再次挂起时,使用zope health watcher获取每个线程正在执行的操作的列表。这通常会让您了解代码所在的位置,或者是在循环中,或者是在某种类型的无限递归中(这可能发生在zodb中,尤其是在采集和类似命名的事情中),或者仅仅是在某些事情上阻塞(例如,到smtp服务器的网络链接上的mtu问题,因此小邮件可以工作,但大邮件会挂起)

您还可以停止smtp服务器(或者只是在plone控制面板中更改端口),看看是否至少会出现异常。默认情况下,如果无法连接到smtp服务器,则Plone应引发异常


在非常极端的情况下,您可以连接到挂起的python进程(我通常使用“top”来查找位于100%CPU的进程),然后您可以找到挂起的位置。这比使用ZopeHealthWatcher要复杂得多,但我最近在reportlabs字体代码中成功地跟踪到了一个挂起到竞争条件的情况,正是使用这种方法,它非常强大。gdb的好处在于它可以停止进程并允许您单步执行代码,以及上下调用堆栈,而不像ZopeHealthWatcher那样只给您一个快照(有点像Heissenberg的不确定性,您可以观察它现在的位置…

python进程挂起时会使用大量CPU吗?使用顶部进行检查

安装,然后当它再次挂起时,使用zope health watcher获取每个线程正在执行的操作的列表。这通常会让您了解代码所在的位置,或者是在循环中,或者是在某种类型的无限递归中(这可能发生在zodb中,尤其是在采集和类似命名的事情中),或者仅仅是在某些事情上阻塞(例如,到smtp服务器的网络链接上的mtu问题,因此小邮件可以工作,但大邮件会挂起)

您还可以停止smtp服务器(或者只是在plone控制面板中更改端口),看看是否至少会出现异常。默认情况下,如果无法连接到smtp服务器,则Plone应引发异常


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

谢谢。这是一种很有价值的调试技术。我发现用于Plone SMTP配置的端口是587,而不是我想象中的465。如果普隆不是因为这个原因被绞死那就太好了。我猜这是一只扑通虫。谢谢。这是一种很有价值的调试技术。我发现用于Plone SMTP配置的端口是587,而不是我想象中的465。如果普隆不是因为这个原因被绞死那就太好了。我猜这是一只扑通虫。