解决 Plone 死锁问题的现代方法是什么?
What's the modern way to solve Plone deadlock issues?
我目前有一个 Plone 4.3.8 站点,其中编辑 portlet 会导致死锁。
我正在尝试寻找解决此问题的工具,但大多数死锁工具都不起作用,而且我没有从那些至少 运行.
我试过:
- z3c.deadlockdebugger => 无法访问堆栈跟踪
- ZopeHealthWatcher => 无法在命令行(或网页)上看到结果
- Products.LongRequestLogger => 也许是迄今为止最好的,给了我一些日志输出——但它的堆栈跟踪集中在 Diazo 代码上,但是当 Diazo 不在范围内时问题仍然存在(运行针对 127.0.0.1)
- gdb attach - 刚刚让我进入了 C 代码
- winpdb => 它不能以与 gdb 相同的方式附加到 运行ning 进程(仅附加到以 winpdb 附加意图启动的进程)
- Products.signalstack (OR Products.signalstacklogger) => USR1 信号只是关闭了一个 zope 进程!
注意: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 的低性能。
我目前有一个 Plone 4.3.8 站点,其中编辑 portlet 会导致死锁。
我正在尝试寻找解决此问题的工具,但大多数死锁工具都不起作用,而且我没有从那些至少 运行.
我试过:
- z3c.deadlockdebugger => 无法访问堆栈跟踪
- ZopeHealthWatcher => 无法在命令行(或网页)上看到结果
- Products.LongRequestLogger => 也许是迄今为止最好的,给了我一些日志输出——但它的堆栈跟踪集中在 Diazo 代码上,但是当 Diazo 不在范围内时问题仍然存在(运行针对 127.0.0.1)
- gdb attach - 刚刚让我进入了 C 代码
- winpdb => 它不能以与 gdb 相同的方式附加到 运行ning 进程(仅附加到以 winpdb 附加意图启动的进程)
- Products.signalstack (OR Products.signalstacklogger) => USR1 信号只是关闭了一个 zope 进程!
注意: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 的低性能。