2013-04-29 76 views
1

我在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(未知,2013年4月27日,22: 1点31分)[4.6.3 GCC]
  • 扩展中心:
    • 重氮主题支持1.0b8 安装一个控制面板,以允许上即时themi ng with Diazo
    • ThèmePlone classique 1.1.2 L'ancienthèmeutilisédans Plone 3 et antierieures。
    • 静态资源存储1.0b5 一种用于存储和提供静态资源文件
  • 我运行Plone的背后Aapache
  • 测试本地
  • 与VirtualBox的4.2.12
  • 运行的虚拟机文件夹Plone安装在虚拟机上
  • Plone版本是4.1.6
  • 虚拟机正在运行Ubuntu 12.04 AMD64
  • Zeocluster 2个客户
  • 电子邮件在Plone实例

据我所知是正确配置,一切工作正常与我的Plone实例,包括用户和组提供的其他复选框。

我用ssmtp做了一个测试,从vm上的节点发送一封邮件给我自己,我没有问题发送邮件。

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

我没有检查Apache日志,一切似乎也没问题。

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

我不知道该怎么做才能解决这个问题。任何想法?

回答

1

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

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

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

在极端极端的情况下,您可以连接到挂蟒蛇进程(我通常使用“top”来查找坐在100%CPU上的进程),然后您可以找到它挂在哪里。这比使用ZopeHealthWatcher复杂得多,但我最近使用这种方法成功地追踪了reportlabs字体代码中的竞争条件,它非常强大。 gdb有什么好处,它会阻止进程并允许你遍历代码,并在调用堆栈上下调用,这与ZopeHealthWatcher不同,它只是给你一个快照(有点像Heissenberg不确定性的事情,你可以观察它的位置现在...)

+0

谢谢。这是有价值的调试技术。我发现用于Plone的SMTP配置的端口是587,而不是我想象的465。如果因为这个原因,Plone不挂,那将会很棒。我想这是一个Plone错误。 – 2013-05-20 15:34:59