2016-04-14 3 views
2

В настоящее время у меня есть сайт Plone 4.3.8, где редактирование портлета вызывает тупик.Каков современный способ решения проблем с блокировкой Plone?

Я пытаюсь найти инструменты, чтобы исправить это, но большинство инструментов взаимоблокировки не работают & Я не получаю хорошую информацию (ИМО) от тех, которые хотя бы запускаются.

Я пробовал:

  • z3c.deadlockdebugger => не может добраться до StackTrace
  • ZopeHealthWatcher => не могут видеть результаты по командной строке (или веб-страницы)
  • Products.LongRequestLogger => возможно, самое лучшее до сих пор, дает мне некоторый выход журнала - но это трассировка стека сосредоточена на диазо-коде, но проблема все еще возникает, когда Diazo не в области (работает против 127.0.0.1)
  • gdb attach - просто приземлился меня в коде С
  • winpdb => он не может подключаться к запущенным процессам таким же образом, что и gdb (только для процессов, начинающихся с намерения вложения с помощью winpdb)
  • Products.signalstack (OR Products.signalstacklogger) => Сигнал USR1 просто выключает zope процесс!

Примечание: z3c.deadlockdebugger (и все, что от него зависит) нуждается в проверке source code, чтобы отказаться от зависимости threadframe.

Мое положение, похоже, связано с обновлением продукта - возможно, одним или обоими либо plone.app.contenttypes, либо plone.app.multilingual, на пустом сайте нет этой проблемы, но я, очевидно, мне нужны данные моего сайта !

Что мне делать, чтобы проделать это?

EDIT:

Я считаю Maurits ответить наиболее правильным, но он не работает в моем случае. В результате я использовал pdb для отслеживания точки, в которой был виден код (в plone.app.debugtoolbar, как это бывает)

+0

О зависимости от threadframe: он устарел, но вы также можете включить его в свой buildout, добавив его в раздел 'eggs'. Поскольку он не опубликован на pypi, вы также должны добавить дополнительные 'find-links' (' https: // majid.info/python/threadframe/') и' allow-hosts'. –

+0

Сайт @keul majid [статья на threadframe] (https://majid.info/blog/threadframe-multithreaded-stack-frame-extraction-for-python/) говорит: «Python 2.5 и более поздние версии включают функцию sys._current_frames () «поэтому я принимаю этот совет – Danimal

+0

Да, это правда, но если вы не хотите изменять исходный код, вы все равно можете использовать threadframe (хотя и устаревший и бесполезный). –

ответ

4

Вы говорите, что с использованием сигнала USR1 отключается Zope при использовании Products.signalstack. Но никаких специальных пакетов не требуется, поэтому я задаюсь вопросом, имеет ли добавление сигнальный пакет этот побочный эффект отключения Zope.

По крайней мере, для меня, несколько недель назад, это работало отлично на сайте 4.3.something Plone: ​​

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

ОК - я удалил сигнальный столбец (но сохранил Products.LongRequestLogger) - и это работает при предоставлении stacktrace, прежде чем я попытаюсь отредактировать портлет, но, к сожалению, он не работает после. Я в замешательстве, почему? Я поймал это в разработке, поэтому я отлаживаю отдельный экземпляр, а не клиент ZEO - это не имеет значения? – Danimal

+0

Действительно, 'Products.singalstack' был [интегрирован в Zope 2.12.5] (https://github.com/zopefoundation/Zope/commit/16796274463f21327e1b7bb3831b39eb671460af) еще в 2010 году. –

2

Хотя @maurits ответить правильно (и простейшими) иногда я вопросы видящего трассировка в результате команды kill: иногда ее можно найти в журнале событий, иногда в оболочке.

Я предпочитаю интеграцию сборки с haufe.requestmonitoring, настраивая также monitor long running requests feature. В вашем журнале событий вы увидите мертвую трассировку, а также активируете инструмент для мониторинга низкой производительности на вашем Plone.

+0

спасибо - но это не сработало для меня ни - Я не вижу трассировку в любом месте. – Danimal

+0

Если вы не видите трассировку, вы, вероятно, не настроили длинные функции запросов, как описано в ссылке, которую я дал вам –

+0

Я сделал это, но затем метод @maurits didn ' t создает для меня трассировку стека. Чтобы не волноваться - pdb получил меня там, в конце. Благодаря! – Danimal