解决Plone死锁问题的现代方法是什么?

Dan*_*mal 2 multilingual deadlock plone

我目前有一个Plone 4.3.8网站,在其中编辑portlet会导致死锁。

我正在尝试找到解决此问题的工具,但是大多数死锁工具无法正常工作,而且我至少从运行这些工具的过程中也无法获得良好的信息(IMO)。

我试过了:

  • z3c.deadlockdebugger =>无法进入堆栈跟踪
  • ZopeHealthWatcher =>在命令行(或网页)上看不到结果
  • Products.LongRequestLogger =>也许是迄今为止最好的,给了我一些日志输出-但是它的堆栈跟踪集中在Diazo代码上,但是当Diazo不在范围内(针对127.0.0.1运行)时,仍然会出现问题
  • gdb附加-刚进入C代码
  • winpdb =>它不能以与gdb相同的方式附加到正在运行的进程(仅附加到以winpdb附加为目的而启动的进程)
  • Products.signalstack(OR Products.signalstacklogger)=> USR1信号刚刚关闭了zope进程!

注意:z3c.deadlockdebugger(及其相关内容)需要检出源代码才能删除线程框架依赖性。

我的情况似乎与产品升级有关-可能是plone.app.contenttypes或plone.app.multilingual中的一个或两个,一个空网站没有这个问题,但显然我需要我的网站数据!

我应该怎么做才能做到这一点?

编辑:

我相信Maurits的回答是最正确的,但是在我看来,这没有用。我最终要做的是使用pdb来跟踪代码的挂起点(发生在plone.app.debugtoolbar中)

mau*_*its 5

您说USR1使用Products.signalstack时使用信号会关闭Zope。但是没有必要使用特殊的程序包,所以我想知道添加信号栈是否具有关闭Zope的副作用。

至少对我而言,几周前,这在Plone 4.3.something网站上运行良好:

kill -USR1 $(cat var/zeoclient.pid)
Run Code Online (Sandbox Code Playgroud)