2016-12-05 9 views
0

Я обновляю экземпляр Plone с 4.0.3 до 4.3.11, и теперь обновление сайта работает около 16 часов. Shure, веб-сервер отключается через час или около того, но процесс все еще работает. Strace говорит:Обновление сайта Plone работает веками

select(12, [4 11], [], [4 11], {25, 609847}) = 0 (Timeout) 
futex(0x1d01d30, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 
futex(0x1d01d30, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 
futex(0x1d01d30, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 
futex(0x1d01d30, FUTEX_WAKE_PRIVATE, 1) = 1 
select(12, [4 11], [], [4 11], {30, 0} 

в то время как эта линия

select(12, [4 11], [], [4 11], {30, 0} 

повторы очень часто, и иногда это occours:

futex(0x1d01d30, FUTEX_WAIT_PRIVATE, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable) 

iostat говорит мне, что диск (новый SSD) используется 10% max, но в основном он работает на холостом ходу. Это также системный диск, поэтому я не исключил, что Plones Disk IO.

База данных для сайта содержит около 60,0000 объектов, в основном одного типа. Они очень маленькие объекты, не имеющие особого внимания.

Машина имеет 16 ГБ памяти и 8 ядер. Хотя только одно ядро ​​выполняет фактическое обновление plone (почему?)

Неужели так много времени для обновления базы данных ZEO с 60 000 объектов? Как я могу знать, что он действительно что-то делает? (strace здесь не очень-то говорит).

+0

Это обновление будет выполнять хотя бы один, возможно, несколько шагов повторной индексации. Индексирование файла может включать в себя создание внешних инструментов для преобразования их в текст. Как предлагает alepisa, посмотрите на журналы экземпляров, шаги индексирования оставляют там маркеры прогресса. –

ответ

2

Аппарат имеет 16 ГБ памяти и 8 ядер. В то время как только одно ядро ​​выполняет фактическое обновление plone (почему?)

Потому что только один поток (так один процессор) выполняет обновление.

Неужели так долго нужно обновить базу ZEO с 60 000 объектов?

Это не нормально. Возможно, у вас есть собственный код, который делает странные вещи. Вы подключаетесь к другим сервисам (solr, другие базы данных, ...)? Вы создаете предварительный просмотр документов? Насколько велика ваша Data.fs и сколько у вас блоб?

Как я могу знать, что он действительно что-то делает?

Первый шаг для его отладки - знать, что происходит. Попробуйте установить https://pypi.python.org/pypi/Products.LongRequestLogger (или аналогичные дополнения).

Это будет указывать на точку, где вы застряли в.

Если у вас есть экземпляр работает на переднем плане вы также можете иметь отслеживающий, посылая сигнал USR1. См:

для более полного понимания.

веб-сервер timeouted через час или около того

Это тоже звучит странно.Если веб-сервер - apache или nginx, время ожидания должно быть в диапазоне минут.

Если вы вызываете непосредственно порт экземпляра, вы не должны иметь никакого таймаута вообще.

Я предлагаю вам это сделать.

Также журналы экземпляров (обычно под $BUILDOUT_DIRECTORY/var/log/) должны сообщать вам о состоянии ваших обновлений.

+0

О, да. Я понял теперь, что для каждого шага обновления мой plone делает catalogUpdate. Я посмотрю, если я могу это пропустить. Но он работает ... Может быть, мне нужно переименовать мой вопрос. –

+1

Это нормально, но на объектах 60k это не должно занять много ... Может быть, у вас есть некоторые пользовательские индексы или метаданные? – alepisa

+0

Я удалил обновление каталога из настройки пользовательского аддона и дошел до того, что задал этот вопрос примерно через 20 минут. Я ожидаю, что это будет сделано через час или около того. –