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

What's the modern way to solve Plone deadlock issues?

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

我正在尝试寻找解决此问题的工具,但大多数死锁工具都不起作用,而且我没有从那些至少 运行.

我试过:

注意:z3c.deadlockdebugger(以及依赖于它的东西)需要检查 source code 以删除 threadframe 依赖性。

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

我应该怎么做才能取得进展?

编辑:

我相信 Maurits 的回答是最正确的,但它对我的情况不起作用。我最终做的是使用 pdb 追踪代码挂起的点(在 plone.app.debugtoolbar 中)

您说在使用 Products.signalstack 时使用 USR1 信号会关闭 Zope。但是不需要特殊的包,所以我想知道添加 signalstack 是否会产生关闭 Zope 的副作用。

至少对我来说,几周前,这在 Plone 4 上运行良好。3.something 站点:

kill -USR1 $(cat var/zeoclient.pid)

尽管@maurits 的答案是正确的(也是最简单的答案),但有时我在查看 kill 命令产生的回溯时遇到问题:有时在事件日志中找到,有时在 shell.

我更喜欢将扩建与 haufe.requestmonitoring, configuring also the monitor long running requests feature 集成。 你会在你的事件日志中看到死锁的回溯,你也会激活一个工具来监控你的 Plone 的低性能。